Array.prototype.reduce() - JavaScript | MDN
関数が呼び出される初回は、 previousValue と currentValue は 2 つの値のうちの 1 つを取り得ます。reduce 呼び出し時に、initialValue が与えられた場合、previousValue は initialValue と等しくなり、currentValue は、配列の最初の値と等しくなります。 initialValue が与えられなかった場合、previousValue は配列の最初の値と等しくなり、currentValue は、2 番目の値と等しくなります。
知らなかったのではまった。 reduce
の第二引数に初期値を渡さないとイテレータは配列の要素の2番目から実行される。
// alert は上がらない [1].reduce((p, c)=> { alert(c); return p + c; }); // alert が一回上がる [1, 2].reduce((p, c)=> { alert(c); return p + c; });