ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript オブジェクトの配列内の同一のキーの値を合計するにはどうすればよいですか?

JavaScript オブジェクトの配列内の同一のキーの値を合計するにはどうすればよいですか?

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

How to Sum Values of Identical Keys in an Array of JavaScript Objects?

オブジェクトの配列内の類似したキーの値の合計

問題:

オブジェクトの配列が与えられた場合、同じものを共有するオブジェクトに関連付けられた値の合計 (または他の数学的演算) を計算するメソッドkey.

例:

次のオブジェクトの配列を考えます:

[
    {
        'name': 'P1',
        'value': 150
    },
    {
        'name': 'P1',
        'value': 150
    },
    {
        'name': 'P2',
        'value': 200
    },
    {
        'name': 'P3',
        'value': 450
    }
]
ログイン後にコピー

必要な出力は、オブジェクトの 'value' プロパティを合計します。一致する「name」プロパティを使用した結果in:

[
    {
        'name': 'P1',
        'value': 300
    },
    {
        'name': 'P2',
        'value': 200
    },
    {
        'name': 'P3',
        'value': 450
    }
]
ログイン後にコピー

解決策:

この解決策には、入力配列を反復処理し、同一のキー値を別のオブジェクトに集約することが含まれます。

var obj = [
    { 'name': 'P1', 'value': 150 },
    { 'name': 'P1', 'value': 150 },
    { 'name': 'P2', 'value': 200 },
    { 'name': 'P3', 'value': 450 }
];

var holder = {};

obj.forEach(function(d) {
  if (holder.hasOwnProperty(d.name)) {
    holder[d.name] = holder[d.name] + d.value;
  } else {
    holder[d.name] = d.value;
  }
});
ログイン後にコピー

結果のホルダー オブジェクトには、キーと値のペアが含まれます。キーは一意の名前の値であり、値は関連する値の合計です。

{
  'P1': 300,
  'P2': 200,
  'P3': 450
}
ログイン後にコピー

必要な出力を生成するには、ホルダー オブジェクトのプロパティを繰り返し処理し、新しいオブジェクトを作成します。

var obj2 = [];

for (var prop in holder) {
  obj2.push({ name: prop, value: holder[prop] });
}
ログイン後にコピー

obj2 に保存される最終結果は、要件を満たします。類似のキーを持つオブジェクトの合計値。

以上がJavaScript オブジェクトの配列内の同一のキーの値を合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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