reduce()

このエントリーをはてなブックマークに追加

Array.reduce()は各配列に対してコールバック関数で直前のコールバック関数の結果を含めて計算することができるメソッドです。

次のコードでは配列の中身をすべて加算した数10を返します。

var arr = [1,2,3,4];
  
arr.reduce(function(prev,elem){
	console.log(prev,elem);
	return prev+elem;
});

このコードではコールバック関数は配列の数つまり4回から1回引いた3回実行されます。

最初のコールバック関数ではprevはarr[0]の1にelemはarr[1]の2です。
2回目のコールバック関数ではprevは直前のコールバック関数の戻り値である3にelemはarr[2]の3です。
3回目のコールバック関数ではprevは直前のコールバック関数の戻り値である6にelemはarr[3]の4です。
結果このコードは最後のコールバック関数の戻り値の10を返します。

このメソッドは第2引数に初期値を設定できます。

var arr = [1,2,3,4];
  
arr.reduce(function(prev,elem){
	return prev+elem;
},0);

初期値が設定された場合、コールバック関数は配列の数つまり4回実行されます。

最初のコールバック関数ではprevは初期値の10の1にelemはarr[0]の1となります。
2回目のコールバック関数ではprevは直前のコールバック関数の戻り値である1にelemはarr[1]の3です。
3回目のコールバック関数ではprevは直前のコールバック関数の戻り値である3にelemはarr[2]の3です。
4回目のコールバック関数ではprevは直前のコールバック関数の戻り値である6にelemはarr[3]の4です。
結果このコードは最後のコールバック関数の戻り値の10を返します。

このメソッドはArray.reduceRight()と逆の動きをします。

このメソッドはECMAScript 5で定義されており、IE8以下など古いブラウザでは動作しません。

登録日 : 2012年10月29日 最終更新日 : 2012年10月29日

同じカテゴリー(Array)のエントリー

検索

スポンサードリンク

バージョン

リファレンス