Math.max() 関数は、引数として与えた複数の数の中で最大の数を返します。

構文

Math.max([value1[, value2[, ...]]])

引数

value1, value2, ...
複数の数値。

戻り値

与えられた数値の中で最大のものを返します。1 つでも数値に変換できない引数があれば、NaN を返します。

解説

max()Math オブジェクトの静的なメソッドなので、自ら生成した Math オブジェクトのメソッドとしてではなく、常に Math.max() として使用するようにしてください。 (Math はコンストラクタではありません)

引数が与えられなかった場合、その結果は -Infinity になります。

1 つでも数値に変換できない引数があれば、結果は NaN になります。

Math.max() の使用

Math.max(10, 20);   //  20
Math.max(-10, -20); // -10
Math.max(-10, 20);  //  20

配列の中で最大の要素

Array.reduce() を使うことで、数値の配列の中で最大の要素を取得できます。それぞれの値を比較するには下記のようにします。

var arr = [1,2,3];
var max = arr.reduce(function(a, b) {
    return Math.max(a, b);
});

下記の関数では、Function.prototype.apply() を使って配列の最大値を取得しています。getMaxOfArray([1, 2, 3])Math.max(1, 2, 3) と同じですが、getMaxOfArray() は配列に対して使用できます。この方法は小規模な配列に対して使うべきです。

function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}

新しいスプレッド構文は、apply を使う方法の短縮版です。

var arr = [1, 2, 3];
var max = Math.max(...arr);

しかし、要素の数が多い大規模な配列では、スプレッド構文 (...) と apply のどちらも、失敗するか誤った値を返す可能性があります。なぜなら、配列の要素を関数の引数として渡そうとしているからです。詳細は apply をビルトイン関数と共に利用する をご覧ください。reduce を使う方法ならば問題ありません。

仕様

仕様書 策定状況 コメント
ECMAScript 1st Edition (ECMA-262) 標準 初期定義。JavaScript 1.0 で実装
ECMAScript 5.1 (ECMA-262)
Math.max の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Math.max の定義
標準  
ECMAScript Latest Draft (ECMA-262)
Math.max の定義
ドラフト  

ブラウザー実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり

関連情報

ドキュメントのタグと貢献者

このページの貢献者: sutara79, teoli, ethertank, Potappo
最終更新者: sutara79,