最終更新日:
公開日:
レシピ
配列
配列から最大値と最小値を取得する
配列の要素から最大値と最小値を取得する方法について解説します。
この記事のポイント
- reduceメソッドと分割代入を使う2種類の方法がある
- 最大値/最小値の要素の添字(インデックス)はindexOfメソッドで取得する
目次
配列にある要素から最大値と最小値を取得
配列のreduceメソッドとMath.maxメソッド、Math.minメソッドをそれぞれ組み合わせると、配列の中にある要素から最大値と最小値をそれぞれ取得することができます。
以下のコード例では、変数numbersに入った配列に対してreduceメソッドを使い、その中でMath.maxメソッドとMath.minメソッドを使って最大値と最小値を取得します。
JS コード例
let numbers = [ 80, -1, 25, 22, 4, 105, -18, 1];
// 最大値を取得
let max = numbers.reduce(function(a,b){
return Math.max(a,b);
});
console.log(max); // 105
// 最小値を取得
let min = numbers.reduce(function(a,b){
return Math.min(a,b);
});
console.log(min); // -18
分割代入「…」を使ってより簡易的にすることもできます。
JavaScript コード例
let numbers = [ 80, -1, 25, 22, 4, 105, -18, 1];
// 最大値を取得
let max = Math.max(...numbers);
console.log(max); // 105
// 最小値を取得
let min = Math.min(...numbers);
console.log(min); // -18
分割代入「…」と配列を組み合わせると、値を一括展開することができます。
例えば上記の配列numbersと分割代入を組み合わせて単純に出力すると、以下のように全ての値を取得できます。
JS コード例
let numbers = [ 80, -1, 25, 22, 4, 105, -18, 1];
console.log(...numbers); // 80 -1 25 22 4 105 -18 1
最大値/最小値を持つ要素の添字(インデックス)を取得
最大値/最小値を取得したときに、もしその値を持つ要素の添字(インデックス)も取得したいときはindexOfメソッドを使って値を検索します。
以下の例では最大値を取得した後に、その数値を持つ要素の添字(インデックス)を取得します。
JavaScript コード例
let numbers = [ 80, -1, 25, 22, 4, 105, -18, 1];
let max = numbers.reduce(function(a,b){
return Math.max(a,b);
});
console.log(max); // 105
// 最大値の数値を持つ要素の添字(インデックス)を取得
let index = numbers.indexOf(max);
console.log(index); // 5
もし最大値を持つ要素が複数ある可能性があるときは、以下のようにwhile文を使って要素が見つかる限りindexOfメソッドを呼び出すことで全ての添字(インデックス)を配列形式で取得することができます。
JS コード例
let numbers = [ 80, -1, 25, 22, 4, 105, -18, 1, 105];
let max = Math.max(...numbers);
console.log(max); // 105
let index_array = new Array();
let index = numbers.indexOf(max);
while(index !== -1) {
index_array.push(index);
index = numbers.indexOf(max, index+1);
}
console.log(index_array); // }(2) [5, 8]
while文で入る前に、最初に1度だけindexOfメソッドで要素を検索することがポイントになります。
ここで1つ目の添字(インデックス)を取得し、その後にwhile文で2つ目以降の添字(インデックス)を検索します。
最小値の要素の添字(インデックス)を取得するときも同じ方法を使用できます。
JavaScript コード例
let numbers = [ 80, -1, 25, 22, 4, 105, -18, 1, -18];
let min = Math.min(...numbers);
console.log(min); // -18
let index_array = new Array();
let index = numbers.indexOf(min);
while(index !== -1) {
index_array.push(index);
index = numbers.indexOf(min, index+1);
}
console.log(index_array); // (2) [6, 8]
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。