とても良い疑問です。
はい、たしかに reduce()
の第一引数は「これまでの要素」っぽく見えますよね。
でも実は、**第一引数は「累積結果(これまでの計算結果)」**なんです。
reduce()
の第一引数(ここでの max
)は、「前回までの戻り値(=累積値)」pkg
)が、「今処理している要素」array.reduce((累積値, 今の要素) => {
return 新しい累積値;
}, 初期値);
const maxLicenseLength = packageList.reduce((max, pkg) => {
return Math.max(max, pkg.license.length);
}, 0);
引数 | 意味 |
---|---|
max |
今まで見た中での「最大のライセンス名の文字数」 |
pkg |
現在処理中の Package オブジェクト |
1回目の実行時、初期値として max = 0
が入る