Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Hợp nhất đối tượng JavaScript cùng khóa giá trị và đếm số lượng

Giả sử chúng ta có mảng đối tượng như sau:

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

Chúng ta cần viết hàm JavaScript nhận vào mảng này.

Hàm hợp nhất tất cả đối tượng có giá trị chung cho thuộc tính "id".

Kết quả mong đợi:

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

Ví dụ

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));

Kết quả

Kết quả in ra console:

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