合併具有相同鍵值並計數的 JavaScript 物件


假設我們有一個這樣的物件陣列 -

const arr = [{
   "value": 10,
   "id": "111",
   "name": "BlackCat",
}, {
   "value": 10,
   "id": "111",
   "name":
   "BlackCat",
}, {
   "value": 15,
   "id": "777",
   "name": "WhiteCat",
}];

我們需要編寫一個 JavaScript 函式,該函式會傳入一個這樣的陣列。

然後,該函式應該將所有那些具有 "id" 屬性的公共值的物件合併在一起。

因此,對於上述陣列,輸出應如下所示 -

const output = [{
   "value": 10,
   "id": "111",
   "name": "BlackCat",
   "count": 2,
}, {
   "value": 15,
   "id": "777",
   "name": "WhiteCat",
   "count": 1,
}]

示例

const arr = [{
   "value": 10,
   "id": "111",
   "name": "BlackCat",
}, {
   "value": 10,
   "id": "111",
   "name": "BlackCat",
}, {
   "value": 15,
   "id": "777",
   "name": "WhiteCat",
}];
const combinedItems = (arr = []) => {
   const res = arr.reduce((acc, obj) => {
      let found = false;
      for (let i = 0; i < acc.length; i++) {
         if (acc[i].id === obj.id) {
            found = true;
            acc[i].count++;
         };
      }
      if (!found) {
         obj.count = 1;
         acc.push(obj);
      }
      return acc;
   }, []);
   return res;
}
console.log(combinedItems(arr));

輸出

控制檯中的輸出將如下所示 -

[
   { value: 10, id: '111', name: 'BlackCat', count: 2 },
   { value: 15, id: '777', name: 'WhiteCat', count: 1 }
]

更新於:2020-11-21

4K+ 閱讀

開啟您的 職業

完成課程獲取認證

開始
廣告