Computer >> Máy Tính >  >> Lập trình >> Javascript

JavaScript:so sánh các thuộc tính của phần tử mảng và nếu giống nhau, hãy kết hợp

Giả sử, chúng ta có một mảng các đối tượng chứa thông tin về một số thiết bị lưu trữ dữ liệu như thế này -

const drives = [
   {size:"900GB", count:3},
   {size:"900GB", count:100},
   {size:"1200GB", count:5},
   {size:"900GB", count:1}
];

Lưu ý như cách một kích thước giống nhau xuất hiện nhiều lần.

Chúng tôi bắt buộc phải viết một hàm nhận trong một mảng như vậy và hợp nhất tất cả các kích thước lặp lại chỉ thành một chỉ mục mảng duy nhất và rõ ràng là cộng số lượng của chúng.

Ví dụ

const drives = [
   {size:"900GB", count:3},
   {size:"900GB", count:100},
    {size:"1200GB", count:5},
   {size:"900GB", count:1}
];
const groupDrives = (arr = []) => {
   const map = drives.reduce((map, e) => {
      if (e.size in map) map[e.size].count += e.count
      else map[e.size] = e
         return map;
   }, {})
   const result = Object.keys(map).map(function (k) {
      return this[k]
   }, map);
   return result;
}
console.log(groupDrives(drives));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ { size: '900GB', count: 104 }, { size: '1200GB', count: 5 } ]