🦚

Math.max に配列を渡すと NaNになる理由と使い方

に公開

Math.max() は 複数の数値 を引数に取る関数です。
そのため、Math.max(prev.map(item => item.id)) のように 配列をそのまま渡すとNaN になります。
✅ 正しくはスプレッド構文 ... で配列を展開します。

// ❌ NaNになる例
Math.max([1, 2, 3]); 

// ✅ 配列を展開して最大値を取得
Math.max(...[1, 2, 3]); // → 3

フォーム追加時の正しい書き方は👇

const nextId = prev.length
  ? Math.max(...prev.map(item => item.id)) + 1
  : 1;

📘 まとめ

  • Math.max() は個々の数値を引数に取る
  • 配列はそのまま渡せない
  • スプレッド構文で展開すればOK

Discussion