JavaScript標準関数Math.maxで配列の最大値を取得する方法とその罠

JavaScript標準関数にはC++のmax_elementのような「配列の最大値を返す」関数は存在しません(しないよね?).

よってMath.max()を使います.

Math.maxは与えられた引数から最大の数を返すので,配列を引数に分解してやれば良いわけです.

つまり

みたいにやるわけですね.

空配列を適用したら-Infinityになるので最低値を次の引数に指定しましょう.

ただ,この方法には罠があって,配列にスプレッド演算子を付けるのを忘れた時に値が0NaNになります.

これはMath.maxは引数を全て数値に変換してから比較を行い,Number([]) === 0であることに由来します.

これはエラーログなどを吐かないので数十分溶かしました.

このエントリーをはてなブックマークに追加 fb-like g-plusone pocket