問題:
給定一個物件陣列,確定一個計算與共享相同物件關聯的值的總和(或其他數學運算)的方法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中文網其他相關文章!