与えた引数の中から最大値を取り出すには、Math.max メソッドを使えばよいのですが、Math.max メソッドは引数に配列を与えることができません。そこで apply メソッドを使うことでそれを解決します。
Math.max メソッドは下記のように複数の引数を与えるとその中から最大値を返してくれます。ですが配列を渡すと結果は NaN になります。
1 2 3 4 |
Math.max(8, 3, 10, 4, 2); //10 Math.max([8, 3, 10, 4, 2]); //NaN |
先日の記事でも書きましたが、apply メソッドは第二引数に渡された配列を複数の引数として呼び出し元のメソッドを実行してくれます。その性質を利用すると下記のようになります。
1 2 3 |
var arr = [8, 3, 10, 4, 2]; Math.max.apply(null, arr); //10 |
ここでは this は使っていないので、this にセットされるオブジェクトは何でもよいのです。ですので null にしてあります。
初めから
コメントありがとうございます。
この使い方を想定してるなんて作った人は頭の中が一体どうなってるんでしょうね…(褒める意味で)