ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript でオブジェクトを複数のプロパティでグループ化し、その値を集計する方法

JavaScript でオブジェクトを複数のプロパティでグループ化し、その値を集計する方法

Barbara Streisand
リリース: 2024-11-10 12:12:03
オリジナル
424 人が閲覧しました

How to Group Objects by Multiple Properties and Aggregate Their Values in JavaScript?

複数のプロパティによるオブジェクトのグループ化とその値の集計

複数のプロパティによる配列内の要素のグループ化は、データの編成と要約に不可欠です。オブジェクトを形状と色でグループ化し、それらの値を集約するという特定の要件に対処するには、JavaScript の組み込みメソッドの機能を活用できます。

ステップ 1: Array#reduce

Array#reduce メソッドは、配列を反復処理し、個々の要素から単一の出力を蓄積するための簡潔かつ効率的な方法を提供します。この場合、これを使用して、結合された形状と色のプロパティに基づいてオブジェクトを蓄積できます。

ステップ 2: ヘルパー オブジェクト

追跡するヘルパー オブジェクトを使用します。形と色のユニークな組み合わせ。配列内の各オブジェクトについて、形状と色のプロパティを連結することによって、その組み合わせがヘルパーに存在するかどうかを確認します。存在しない場合は、ヘルパー オブジェクトに新しいエントリを作成し、同時に現在のオブジェクトのコピーを結果配列にプッシュします。

ステップ 3: 値の集計

同様の組み合わせがヘルパー オブジェクトにすでに存在する場合は、対応するエントリの used 値とインスタンス値を単純にインクリメントし、現在の値から効果的に値を集計します。 object.

ステップ 4: オブジェクトのコピー

配列内の元のオブジェクトの変更を避けるために、Object.assign を使用してコピーを作成します。これにより、ヘルパー オブジェクトにオブジェクトの独立したコピーが含まれるようになり、値を個別に集計できるようになります。

実装:

const arr = [
  { shape: 'square', color: 'red', used: 1, instances: 1 },
  { shape: 'square', color: 'red', used: 2, instances: 1 },
  { shape: 'circle', color: 'blue', used: 0, instances: 0 },
  { shape: 'square', color: 'blue', used: 4, instances: 4 },
  { shape: 'circle', color: 'red', used: 1, instances: 1 },
  { shape: 'circle', color: 'red', used: 1, instances: 0 },
  { shape: 'square', color: 'blue', used: 4, instances: 5 },
  { shape: 'square', color: 'red', used: 2, instances: 1 },
];

const helper = {};
const result = arr.reduce((r, o) => {
  const key = o.shape + '-' + o.color;
  if (!helper[key]) {
    helper[key] = Object.assign({}, o); // create a copy of o
    r.push(helper[key]);
  } else {
    helper[key].used += o.used;
    helper[key].instances += o.instances;
  }
  return r;
}, []);

console.log(result);
ログイン後にコピー

出力:

[
  { shape: 'square', color: 'red', used: 5, instances: 3 },
  { shape: 'circle', color: 'red', used: 2, instances: 1 },
  { shape: 'square', color: 'blue', used: 11, instances: 9 },
  { shape: 'circle', color: 'blue', used: 0, instances: 0 }
]
ログイン後にコピー

このソリューションは、形状と色によってオブジェクトを効果的に集約し、データのまとまった概要

以上がJavaScript でオブジェクトを複数のプロパティでグループ化し、その値を集計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート