reduce

とても良い疑問です。

はい、たしかに reduce() の第一引数は「これまでの要素」っぽく見えますよね。

でも実は、**第一引数は「累積結果(これまでの計算結果)」**なんです。


✅ 結論(kan)


✅ reduce の基本構文の正しい理解

array.reduce((累積値, 今の要素) => {
  return 新しい累積値;
}, 初期値);


✅ 今のコードで言うと

const maxLicenseLength = packageList.reduce((max, pkg) => {
  return Math.max(max, pkg.license.length);
}, 0);

引数 意味
max 今まで見た中での「最大のライセンス名の文字数」
pkg 現在処理中の Package オブジェクト

✅ なぜ「max」は過去の最大値になるのか?

1回目の実行時、初期値として max = 0 が入る