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

JavaScriptでオブジェクトのプロパティ値が配列内に出現する回数を集計する方法

配列内のオブジェクトプロパティの値ごとの出現回数を調べたい場合、JavaScriptの reduce() メソッドを活用するのが効果的です。ここでは、reduce()Map を組み合わせて、科目名(subjectName)ごとの出現回数を集計する方法を紹介します。

コード例

const subjectDetails =
[
    {
        subjectId: '101',
        subjectName: 'JavaScript'
    },
    {
        subjectId: '102',
        subjectName: 'Java'
    },
    {
        subjectId: '103',
        subjectName: 'JavaScript'
    }
];
console.log([...subjectDetails.reduce((obj1, obj2) => {
    if (obj1.has(obj2.subjectName)){
        obj1.get(obj2.subjectName).frequency++;
    } else {
        obj1.set(obj2.subjectName, { subjectName: obj2.subjectName,
        frequency: 1 });
    }
    return obj1;
}, new Map()).values()]);

プログラムの実行方法

上記のプログラムを実行するには、次のコマンドを使用します。

node fileName.js

ここでは、ファイル名を demo144.js として保存しています。

出力結果

プログラムを実行すると、以下のような出力が得られます。

PS C:\Users\Amit\JavaScript-code> node demo144.js
[
    { subjectName: 'JavaScript', frequency: 2 },
    { subjectName: 'Java', frequency: 1 }
]

コードの解説

このコードの仕組みは以下のとおりです。

1. reduce() の初期値として Map を作成
reduce() の第2引数に new Map() を渡すことで、集計結果を格納するための空の Map を初期値として設定しています。

2. 各オブジェクトを順に処理
配列の各要素について、その subjectName がすでに Map に登録されているかどうかを has() メソッドで判定します。

3. 出現回数の更新または新規登録
すでに存在する場合は get() で該当エントリを取得し、frequency を1つ増やします。存在しない場合は set() を使って、出現回数1の新しいエントリを登録します。

4. 結果を配列として出力
最後に values() で Map の値を取り出し、スプレッド構文 [...] によって配列に変換してコンソールに表示しています。

この手法を使えば、オブジェクト配列内の任意のプロパティ値について、簡単に出現回数を集計することができます。データの統計処理や重複チェックなど、さまざまな場面で応用できる便利なパターンです。

  1. JavaScriptで配列内の最頻値とその出現回数を求める方法

    JavaScriptでは、リテラル(数値や文字列など)を含む配列を受け取り、その中で最も多く登場する要素(最頻値)と、それが何回繰り返されているかを出力する関数を書くことができます。実装の考え方この処理は、配列の reduce() メソッドを使うことで効率的に実装できます。各要素の出現回数をオブジェクトに記録しながら走査し、同時に最大出現回数を持つ要素を追跡します。同じ出現回数の要素が複数ある場合は、それらすべてを配列に格納して返すようにしています。コード例実際のコードは以下のとおりです。 count[acc[0]]) { return [val]; }

  2. C#の再帰処理で回転されたソート済み配列から要素を検索する方法

    概要回転されたソート済み配列(ローテート・ソート配列)から特定の値を検索するには、通常の二分探索を少し改良した再帰的なアプローチが有効です。ポイントは、中央の要素(最小要素)のインデックスを基準に配列を2つの部分に分け、どちら側に目的の値が存在するかを判定しながら探索範囲を絞り込んでいくことです。アルゴリズムの手順中央要素(最小要素)のインデックスを見つける。以下の条件に基づいて、該当する部分配列に対して二分探索を適用する。検索対象の値が開始要素から mid-1 番目の要素の間に存在する場合、start ~ mid-1 の範囲で二分探索を再帰的に実行する。それ以外で、値が mid ~ 末尾の要