JavaScript | 配列から最大値、最小値を取得する方法

JavaScript 配列,JavaScript

JavaScript | 配列から最大値、最小値を取得する方法

JavaScriptで配列から最大値(最も大きい値)、最小値(最も小さい値)を取得する方法です。

apply()メソッドを使ったサンプルコードを紹介しています。

配列から最大値を取得する

配列から最大値(最も大きい値)を取得する簡単な方法として、Math.max.apply()を利用しています。

let nums = [25, 16, 23, 33, 11]

let max_value = Math.max.apply(null, nums)

console.log(max_value)
// 33

配列から最小値を取得する

Math.max.apply()とする事で、配列から最小値(最も小さい値)を取得する事が可能です。

let nums = [25, 16, 23, 33, 11]

let min_value = Math.min.apply(null, nums)

console.log(min_value)
// 11

文字列型の値が含まれる場合

配列の値に文字列型の値が含まれる可能性がある場合は、問題が発生します。

クォーテーションで囲われた数値、もしくは空値の場合は、数値型と同等に最大値、最小値を取得できます。

let nums = [25, 16, 23, 33, 11, '55']

let max_value = Math.max.apply(null, nums)

console.log(max_value)
// 55

空の値は0として扱われます。

let nums = [25, 16, 23, 33, 11, '55', '']

let min_value = Math.min.apply(null, nums)

console.log(min_value)
// 0

数値、空の値以外のクォーテーションで囲われた文字列が存在した場合、最大値の取得、最小値の取得共に返り値は「NaN」になってしまいます。

let nums = [25, 16, 23, 33, 11, '55', 'banana'];

let max_value = Math.max.apply(null, nums);

console.log(max_value);
// NaN

対処法のひとつとして配列から数値型の値のみを検出(文字列型の値を削除)した配列を使う方法があります。

let nums = [25, 16, 23, 33, 11, "banana"]

// 配列から数値型のみを検出する
nums = nums.filter(function (x) {
	return typeof x === 'number'
})

let max_value = Math.max.apply(null, nums)
// 33

アロー関数版

let nums = [25, 16, 23, 33, 11, "banana"]

// 配列から数値型のみを検出する
nums = nums.filter(x => {
	typeof x === 'number'
})

let max_value = Math.max.apply(null, nums)
// 33