これらは イミュータブル な配列のイテレータであり、元の配列を変更する代わりに新しい値を返します。これにより、手書きの for ループよりもクリーンで宣言的なコードになります。
js
nums = [, , , ];
nums.( n * );
nums.( n % === );
nums.( sum + n, );
これらは イミュータブル な配列のイテレータであり、元の配列を変更する代わりに新しい値を返します。これにより、手書きの for ループよりもクリーンで宣言的なコードになります。
nums = [, , , ];
nums.( n * );
nums.( n % === );
nums.( sum + n, );
Reduce は「アキュムレータ(accumulator)」を持ち運びながら配列を走査します。各ステップで新しいアキュムレータを返します。
// step 0: acc=0, n=1 → 1
// step 1: acc=1, n=2 → 3
// step 2: acc=3, n=3 → 6
// step 3: acc=6, n=4 → 10
合計のためだけのものではありません — reduce はオブジェクトの構築、アイテムのグループ化、フラット化もできます。
users.reduce((acc, u) => { acc[u.id] = u; return acc; }, {}); // index by id
これらはきれいに チェーン でき、変更(mutate)を行わないため、状態駆動の UI で重要になります。forEach は副作用のためだけに使ってください(何も返しません)。複数のパスをチェーンすることになる巨大な配列では、1回の reduce や素朴なループのほうが効率的なこともあります。