首頁 >web前端 >js教程 >如何對 JavaScript 物件陣列中相同鍵的值求和?

如何對 JavaScript 物件陣列中相同鍵的值求和?

Barbara Streisand
Barbara Streisand原創
2024-11-26 13:03:10632瀏覽

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': '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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn