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日