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
ディスカッション
コメント一覧
まだ、コメントがありません