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

JavaScriptで平均値を計算する際に一部の値を除外する方法

たとえば、次のようなオブジェクトの配列があったとします。

data = [
    {"Age":26,"Level":8},
    {"Age":37,"Level":9},
    {"Age":32,"Level":5},
    {"Age":31,"Level":11},
    {"Age":null,"Level":15},
    {"Age":null,"Level":17},
    {"Age":null,"Level":45}
];

このデータには Age(年齢)が null のオブジェクトが含まれています。ここで必要になるのは、Age プロパティが有効な値(truthy な値)を持つオブジェクトだけを対象として、Level の平均値を計算する JavaScript 関数です。

ポイント:truthy 判定による除外

JavaScript では、null・undefined・0・空文字などは「falsy(偽とみなされる値)」として扱われます。そのため、if 文による条件判定を組み込むだけで、これらの無効なデータを自動的に除外することができます。

コード例

以下が実際の実装コードです。

data = [
    {"Age":26,"Level":8},
    {"Age":37,"Level":9},
    {"Age":32,"Level":5},
    {"Age":31,"Level":11},
    {"Age":null,"Level":15},
    {"Age":null,"Level":17},
    {"Age":null,"Level":45}
];
const findAverage = arr => {
    const creds = arr.reduce((acc, val) => {
        const { Age, Level } = val;
        let { count, sum } = acc;
        if(Age){
            count += 1;
            sum += Level;
        };
        return { count, sum };
    }, {
        count: 0,
        sum: 0
    });
    return (creds.sum)/(creds.count);
};
console.log(findAverage(data));

処理の流れを解説

このコードでは Array.prototype.reduce() メソッドを使用しています。

  • 初期値として、count(対象件数)と sum(合計値)を持つオブジェクトをアキュムレータとして用意します。
  • 配列の各要素を順に取り出し、Age プロパティが truthy である場合のみ、count を +1 し、sum に Level を加算します。
  • すべての要素を処理した後、sum を count で割ることで、有効なデータのみの平均値が求められます。

この方法なら、filter() で前処理をしてから再度ループする二度手間を避け、一度の走査で集計を完結できるのがメリットです。

出力結果

コンソールには次のように出力されます。

8.25

Age が null の 3 件(Level: 15, 17, 45)は計算から除外され、残りの 4 件をもとに (8 + 9 + 5 + 11) ÷ 4 = 8.25 という結果が得られます。API レスポンスなどで欠損値を含むデータを扱う際に役立つ、シンプルかつ実用的なテクニックです。

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

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

  2. JavaScriptでfalsy値(偽と評価される値)を見分ける方法

    JavaScriptにおけるfalsy値とはJavaScriptでは、値をBoolean型として評価したときに「false」とみなされる値がいくつか存在します。これらは「falsy値(偽の値)」と呼ばれます。条件分岐や論理演算において、意図しない動作を防ぐために、どの値がfalseと評価されるかを正しく理解しておくことが重要です。JavaScriptでfalseと評価される主な値は以下の通りです。false — Boolean型のfalseそのもの0 — 数値のゼロ空文字列:、、または ``(テンプレートリテラル)null — 値が存在しないことを示す特殊な値undefined — 値が未定義