配列内の数値の最小値と最大値を取得する方法を調べてみたのでメモ。
うまくいかなかった場合
Math.min()とMath.max()は引数を複数設定できるので、以下のように試してみました。
JavaScript
var arr = [1, 2, 3, 4, 5]; console.log(Math.min(arr)); // NaN console.log(Math.max(arr)); // NaN
引数に配列は設定できないので、うまく取得できませんでした。
うまくいかなかった場合のデモページ
for文で回す場合
配列をfor文で回して、値を1つずつ比較します。
JavaScript
var arr = [1, 2, 3, 4, 5]; var minData = arr[0]; var maxData = arr[0]; for (var i = 0; i < arr.length; i++) { minData = Math.min(minData, arr[i]); maxData = Math.max(maxData, arr[i]); } console.log(minData); // 1 console.log(maxData); // 5
これで最小値と最大値を取得できました。
for文で回す場合のデモページ
apply()を使う場合
apply()を使用するともっとシンプルに記述できます。
JavaScript
var arr = [1, 2, 3, 4, 5]; console.log(Math.min.apply(null, arr)); // 1 console.log(Math.max.apply(null, arr)); // 5
apply()を使う場合のデモページ
基本的にはapply()を使う場合で、調べる際に何か別の処理をしたい場合(数値かどうかチェックするなど)はfor文を使ってもいいかもしれません。
【参考サイト】
- 【Javascript】配列の値の中から、最大値、最小値を求める(配列を引数に展開する) at softelメモ
- Function.prototype.apply() – JavaScript | MDN
コメントが承認されるまで時間がかかります。