JavaScriptでネストされた配列の各要素の平均値を求める方法
この記事では、数値の配列(ネストされた配列)を受け取り、それぞれのサブ配列の平均値を計算して、新しい配列として返すJavaScript関数の書き方を解説します。
やりたいこと
例えば、次のような「配列の中に配列が入った」データがあるとします。
const arr = [ [1], [2,3], [4,5,6,7] ];
この場合、求めたい結果は以下のような新しい配列です。
- [1] の平均 → 1
- [2, 3] の平均 → (2 + 3) / 2 = 2.5
- [4, 5, 6, 7] の平均 → (4 + 5 + 6 + 7) / 4 = 5.5
つまり、出力は [1, 2.5, 5.5] となります。
実装方法
まず、1つの配列の合計を reduce() で求め、その合計を要素数で割ることで平均を計算する関数を作成します。次に、map() を使って外側の配列の各要素(サブ配列)に対してこの平均計算を適用します。
const arr = [
[1],
[2,3],
[4,5,6,7]
];
// 配列の平均値を計算する関数
const average = (arr = []) => {
const sum = arr.reduce((a, b) => a + b);
return sum / arr.length;
}
// 各サブ配列の平均を新しい配列として返す関数
const averageWithin = (arr = []) => {
const res = arr.map(el => average(el));
return res;
};
console.log(averageWithin(arr));実行結果
コンソールには以下のように出力されます。
[ 1, 2.5, 5.5 ]
コードのポイント
- reduce()メソッド: サブ配列内のすべての要素を足し合わせて合計値を求めています。
- map()メソッド: 元の配列を変更せずに、各サブ配列の平均値からなる新しい配列を生成しています。
- デフォルト引数: 引数が渡されなかった場合にエラーにならないよう、
= []で空配列をデフォルト値に設定しています。
このように、reduce() と map() を組み合わせることで、ネストされた配列の平均値を簡潔かつ読みやすく計算できます。
-
JavaScriptのArray.prototype.find()メソッドとは?使い方をサンプルコードで解説
Array.prototype.find() メソッドは、配列の中から指定した条件(テスト関数)を満たす最初の要素の値を返します。 条件に一致する要素が見つかった時点で検索を終了するため、大きな配列でも効率的に動作します。また、どの要素も条件を満たさなかった場合は undefined を返すという点も重要な特徴です。 find()メソッドの基本構文 arr.find(callback(element[, index[, array]])[, thisArg]) callback:各要素に対して実行されるテスト関数。true を返した要素が結果となります。 thisArg(省略可):callb
-
JavaScriptで配列の平均値を計算する方法
JavaScriptで配列の平均値を求めるには、配列内のすべての要素を合計し、その合計を配列の長さ(要素数)で割ります。要素の合計を求めるには、forEach()メソッドやreduce()メソッドを使うと簡単に実装できます。コード例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia