JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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() を組み合わせることで、ネストされた配列の平均値を簡潔かつ読みやすく計算できます。

  1. JavaScriptのArray.prototype.find()メソッドとは?使い方をサンプルコードで解説

    Array.prototype.find() メソッドは、配列の中から指定した条件(テスト関数)を満たす最初の要素の値を返します。 条件に一致する要素が見つかった時点で検索を終了するため、大きな配列でも効率的に動作します。また、どの要素も条件を満たさなかった場合は undefined を返すという点も重要な特徴です。 find()メソッドの基本構文 arr.find(callback(element[, index[, array]])[, thisArg]) callback:各要素に対して実行されるテスト関数。true を返した要素が結果となります。 thisArg(省略可):callb

  2. JavaScriptで配列の平均値を計算する方法

    JavaScriptで配列の平均値を求めるには、配列内のすべての要素を合計し、その合計を配列の長さ(要素数)で割ります。要素の合計を求めるには、forEach()メソッドやreduce()メソッドを使うと簡単に実装できます。コード例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia