JavaScriptで配列の最小値/最大値を見つける5つの方法!徹底解説
JavaScriptで配列の最小値/最大値を見つける方法
方法1:Math.max/Math.minを使う
Mathオブジェクトには、配列の最大値/最小値を取得するMath.max()
とMath.min()
という関数があります。これらの関数は、引数として渡された数値の中で最大/最小のものを返します。
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
const max = Math.max(...numbers);
console.log(max); // 5
// 最小値を取得
const min = Math.min(...numbers);
console.log(min); // 1
この方法はシンプルで分かりやすいですが、配列の要素がすべて数値であることが前提です。
方法2:reduceを使う
reduce()関数は、配列の要素を累積的に処理していく関数です。この関数を使って、配列の最小値/最大値を求めることができます。
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
const max = numbers.reduce((a, b) => Math.max(a, b));
console.log(max); // 5
// 最小値を取得
const min = numbers.reduce((a, b) => Math.min(a, b));
console.log(min); // 1
この方法は、配列の要素が数値以外でも使用できます。
方法3:forループを使う
forループを使って、配列の要素を一つずつ比較していく方法もあります。
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
let max = numbers[0];
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
console.log(max); // 5
// 最小値を取得
let min = numbers[0];
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] < min) {
min = numbers[i];
}
}
console.log(min); // 1
この方法は、他の方法よりも処理速度が遅くなりますが、配列の要素を自由に処理したい場合に有効です。
JavaScriptで配列の最小値/最大値を見つける方法はいくつかあります。それぞれの方法のメリットとデメリットを理解して、状況に合わせて使い分けることが重要です。
方法1:Math.max/Math.minを使う
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
const max = Math.max(...numbers);
console.log(max); // 5
// 最小値を取得
const min = Math.min(...numbers);
console.log(min); // 1
方法2:reduceを使う
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
const max = numbers.reduce((a, b) => Math.max(a, b));
console.log(max); // 5
// 最小値を取得
const min = numbers.reduce((a, b) => Math.min(a, b));
console.log(min); // 1
方法3:forループを使う
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
let max = numbers[0];
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
console.log(max); // 5
// 最小値を取得
let min = numbers[0];
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] < min) {
min = numbers[i];
}
}
console.log(min); // 1
応用
例えば、文字列の配列の最大値/最小値を取得するには、文字列の長さを比較する必要があります。
const strings = ["a", "bc", "def", "ghi"];
// 最大値を取得
const max = strings.reduce((a, b) => (a.length > b.length ? a : b));
console.log(max); // "def"
// 最小値を取得
const min = strings.reduce((a, b) => (a.length < b.length ? a : b));
console.log(min); // "a"
const objects = [
{ name: "John", age: 30 },
{ name: "Mary", age: 25 },
{ name: "David", age: 40 },
];
// 年齢の最大値を取得
const max = objects.reduce((a, b) => (a.age > b.age ? a : b));
console.log(max); // { name: "David", age: 40 }
// 年齢の最小値を取得
const min = objects.reduce((a, b) => (a.age < b.age ? a : b));
console.log(min); // { name: "Mary", age: 25 }
このように、配列の要素の種類に合わせて、比較方法を工夫することで、さまざまなデータ型の配列の最小値/最大値を取得することができます。
Array.sort()メソッドは、配列の要素をソートする関数です。この関数を使い、配列を昇順または降順にソートしてから、最初の要素または最後の要素を取得することで、最小値/最大値を取得することができます。
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
numbers.sort((a, b) => a - b);
const max = numbers[numbers.length - 1];
console.log(max); // 5
// 最小値を取得
numbers.sort((a, b) => b - a);
const min = numbers[0];
console.log(min); // 1
ES6のスプレッド構文を使って、Math.max()やMath.min()に配列の要素を直接渡すことができます。
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
const max = Math.max(...numbers);
console.log(max); // 5
// 最小値を取得
const min = Math.min(...numbers);
console.log(min); // 1
ライブラリを使う
underscore.jsやlodash.jsなどのライブラリには、配列の最小値/最大値を取得する関数を提供しています。
const _ = require('underscore');
const numbers = [1, 3, 5, 2, 4];
// 最大値を取得
const max = _.max(numbers);
console.log(max); // 5
// 最小値を取得
const min = _.min(numbers);
console.log(min); // 1
javascript