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

JavaScriptを使ってオブジェクトの配列から平均年齢を求める方法

問題

ある人物たちのデータを含むオブジェクトの配列を引数として受け取るJavaScript関数を作成する必要があります。

作成する関数は、各オブジェクトが持つ age プロパティの平均値を計算して返すシンプルなものです。

アプローチ

ここでは、配列の reduce() メソッドを活用します。reduce() を使うことで、配列を一度だけ走査しながら「年齢の合計(sum)」と「人数(count)」を同時に集計できます。最後に合計を人数で割れば平均年齢が求まります。また、空の配列が渡された場合に0除算が発生しないよう、防御的な処理も加えています。

コード例

実際のコードは以下の通りです。

const people = [
    { fName: 'Ashish', age: 23 },
    { fName: 'Ajay', age: 21 },
    { fName: 'Arvind', age: 26 },
    { fName: 'Mahesh', age: 28 },
    { fName: 'Jay', age: 19 },
];
const findAverageAge = (arr = []) => {
    const { sum, count } = arr.reduce((acc, val) => {
        let { sum, count } = acc;
        sum += val.age;
        count++;
        return { sum, count };
    }, {
        sum: 0, count: 0
    });
    return (sum / (count || 1));
};
console.log(findAverageAge(people));

出力

23.4

コードの解説

デフォルト引数: findAverageAge 関数は、引数が渡されなかった場合に備えて空の配列をデフォルト値として設定しています。

reduce()による集計: アキュムレータの初期値を { sum: 0, count: 0 } とし、各要素を処理するたびに age の値を合計に加算し、カウントを1ずつ増やしていきます。

0除算への対策: 最終的な平均の計算では sum / (count || 1) としています。配列が空で count が0の場合でも、1で除算されるため、NaNInfinity が返されることを防げます。

このように reduce() を使えば、ループ処理を書かずに簡潔かつ効率的に統計値を計算できます。

  1. JavaScriptでJSON配列からデータを読み取る方法をサンプルコード付きで解説

    Web開発では、APIから取得したJSONデータを処理する場面が非常によくあります。本記事では、JavaScriptを使ってJSON配列からデータを読み取り、画面に表示する方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 JSON配列からデータを読み取る基本の流れ JSON形式の文字列をJavaScriptで扱うには、まずJSON.parse()メソッドで文字列をJavaScriptのオブジェクト(配列)に変換します。変換後は、forEach()メソッドなどを活用して、配列の各要素に格納された値へ簡単にアクセスできます。 サンプルコード <!DOCTYPE htm

  2. JavaScriptのオブジェクト配列に配列メソッドを適用する方法

    JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8