JavaScriptで配列の最小値/最大値を見つける5つの方法!徹底解説

2024-04-02

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


JSONの日時フォーマット:JavaScriptとPython間の互換性を確保する方法

JSONは軽量なデータ交換フォーマットとして広く利用されています。JavaScriptとPythonは主要なプログラミング言語であり、JSONとの互換性も備えています。しかし、両言語における日時の扱いには違いがあり、データの受け渡しで問題が発生する可能性があります。...


JavaScriptでローカルファイルを読み込む際の「Cross origin requests are only supported for HTTP.」エラーの解決策

JavaScriptでローカルファイル(file:// プロトコル)を読み込む際に、「Cross origin requests are only supported for HTTP. 」というエラーが発生する場合があります。これは、ブラウザのセキュリティ機能である CORS による制限が原因です。...


Angular2 で ngStyle を使ってエレガントな UI を構築

HTML テンプレートで要素を定義するまず、背景画像を追加したい要素を HTML テンプレートで定義します。このコードでは、div 要素に ngStyle ディレクティブを適用しています。このディレクティブは、myStyle プロパティに格納されたスタイルオブジェクトに基づいて要素のスタイルを更新します。...


【徹底解説】JavaScriptプロジェクトで「Can't resolve module (not found)」エラーが発生する原因と解決方法

React. jsプロジェクトでモジュールをインポートしようとすると、「Can't resolve module (not found)」というエラーが発生することがあります。これは、モジュールが見つからないことを意味します。原因このエラーが発生する主な原因は次のとおりです。...


[TypeScript 入門] React でステートを操る:初心者でも安心のガイド

ステートは、コンポーネントのデータ属性であり、時間経過とともに変化します。例えば、ボタンクリックでカウント数を増減するような機能では、カウント数がステートとして管理されます。React では、useState フックを使用してステートを管理します。このフックは、ステート変数とその更新用関数を含むタプルを返します。...