在物件陣列中對相似的數字值求和 - JavaScript
假設我們有一個這樣的物件陣列 −
const arr = [ {"firstName":"John", "value": 89}, {"firstName":"Peter", "value": 151}, {"firstName":"Anna", "value": 200}, {"firstName":"Peter", "value": 22}, {"firstName":"Anna","value": 60} ];
我們需要編寫一個 JavaScript 函式,該函式接收其中一個數組,並將具有類似 firstName 屬性值的那些物件的值屬性合併起來。
因此,對於上述陣列,輸出應如下所示 −
const output = [ {"firstName":"John", "value": 89}, {"firstName":"Peter", "value": 173}, {"firstName":"Anna", "value": 260} ];
對於每個物件,我們將遞迴地查詢具有類似特徵的物件
(在此問題上下文中類似的物件是指具有類似 firstName 值的物件)。
然後,我們將值屬性新增到一個物件,並從陣列中刪除另一個物件。這將持續到我們到達陣列末尾。到達後,我們將把陣列縮減為所需的陣列。
示例
以下是程式碼 −
const arr = [ {"firstName":"John", "value": 89}, {"firstName":"Peter", "value": 151}, {"firstName":"Anna", "value": 200}, {"firstName":"Peter", "value": 22}, {"firstName":"Anna","value": 60} ]; const sumSimilar = arr => { const res = []; for(let i = 0; i < arr.length; i++){ const ind = res.findIndex(el => el.firstName === arr[i].firstName); if(ind === -1){ res.push(arr[i]); }else{ res[ind].value += arr[i].value; }; }; return res; }; console.log(sumSimilar(arr));
輸出
這將在控制檯中產生以下輸出 −
[ { firstName: 'John', value: 89 }, { firstName: 'Peter', value: 173 }, { firstName: 'Anna', value: 260 } ]
廣告