JavaScriptで配列内の最大値と最小値の差を求める方法
本記事では、数値の配列を受け取り、その中の最大値と最小値の差(幅)を返す関数をJavaScriptで作成する方法を解説します。
配列の準備
まず、サンプルとして使用する数値の配列を作成します。
const arr = [23,54,65,76,87,87,431,-6,22,4,-454];
Math.max() と Math.min() で最大値・最小値を求める
次に、Math.max() メソッドと Math.min() メソッドを使って、配列内の最大値と最小値をそれぞれ求めます。forEach() で配列を順番に走査し、最初の要素(index === 0)で最小値・最大値を初期化した後、残りの要素と順に比較して更新していきます。
const arrayDifference = (arr) => {
let min, max;
arr.forEach((num, index) => {
if(index === 0){
min = num;
max = num;
}else{
min = Math.min(num, min);
max = Math.max(num, max);
};
});
};完全なコード例
上記のロジックに、最大値から最小値を引いた差を返す処理を追加した完全なコードがこちらです。
サンプルコード
const arr = [23,54,65,76,87,87,431,-6,22,4,-454];
const arrayDifference = (arr) => {
let min, max;
arr.forEach((num, index) => {
if(index === 0){
min = num;
max = num;
}else{
min = Math.min(num, min);
max = Math.max(num, max);
};
});
return max - min;
};
console.log(arrayDifference(arr));実行結果
このコードをコンソールで実行すると、以下のように出力されます。
885
配列内の最大値は 431、最小値は -454 であるため、その差は 431 − (-454) = 885 となります。
補足:スプレッド構文を使ったより簡潔な書き方
スプレッド構文(...)を使えば、ループ処理を書かずに1行で同じ結果を得ることもできます。
const arrayDifference = (arr) => Math.max(...arr) - Math.min(...arr); console.log(arrayDifference([23,54,65,76,87,87,431,-6,22,4,-454])); // 885
ただし、要素数が非常に多い配列ではスプレッド構文がスタックオーバーフローを引き起こす可能性があるため、そのようなケースでは forEach() を使った上記の方法や reduce() を利用するのが安全です。
-
JavaScriptのshift()メソッドで配列の先頭要素を削除する方法
JavaScript の shift() メソッドは、配列の先頭(最初)の要素を取り除くために使用されます。取り除かれた要素は戻り値として返されるため、「削除」と「取得」を同時に行える便利なメソッドです。shift() メソッドの構文array.shift()shift() は引数を必要とせず、呼び出すだけで配列の最初の要素が削除されます。なお、元の配列自体が変更される(破壊的メソッド)点には注意が必要です。また、空の配列に対して shift() を呼び出した場合は undefined が返されます。それでは、実際に shift() メソッドを使ったサンプルコードを見ていきましょう。例1:配列
-
JavaScriptの配列reverse()メソッドとは?使い方とサンプルコードを解説
JavaScriptのreverse()メソッドは、配列の要素を逆順に並べ替えるために使用されるメソッドです。呼び出すと元の配列そのものが反転され、その結果の配列が戻り値として返されます。構文array.reverse()reverse()メソッドのポイント引数は不要で、呼び出した配列自体を直接書き換えます(破壊的なメソッド)。戻り値は、要素が反転された配列への参照です。元の配列を変更せずに反転したい場合は、ES2023で追加されたtoReversed()メソッドを使うと便利です。それでは、実際にJavaScriptでreverse()メソッドを実装してみましょう。例1:基本的な使い方<