問題:
オブジェクトの配列が与えられた場合、同じものを共有するオブジェクトに関連付けられた値の合計 (または他の数学的演算) を計算するメソッド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 サイトの他の関連記事を参照してください。