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

Đếm các bản sao và tổng hợp mảng đối tượng trong JavaScript

Giả sử, chúng ta có một mảng các đối tượng như thế này -

const arr = [
   {
      "Country": "BR",
      "New Lv1−Lv2": "#N/A"
   },
   {
      "Country": "BR",
      "New Lv1−Lv2": "#N/A"
   },
   {
      "Country": "",
      "New Lv1−Lv2": "test"
   }];

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng các đối tượng như vậy. Hàm tạo và trả về một mảng mới trong đó không có đối tượng nào được lặp lại (do lặp lại chúng tôi có nghĩa là các đối tượng có cùng giá trị cho thuộc tính "Country".)

Hơn nữa, hàm phải gán một thuộc tính đếm cho mỗi đối tượng đại diện cho số lần chúng xuất hiện trong mảng ban đầu.

Ví dụ

Mã cho điều này sẽ là -

const arr = [
   {
      "Country": "BR",
      "New Lv1−Lv2": "#N/A"
   },
   {
      "Country": "BR",
      "New Lv1−Lv2": "#N/A"
   },
   {
      "Country": "",
      "New Lv1−Lv2": "test"
   }];
   const convert = (arr) => {
      const res = {};
      arr.forEach((obj) => {
         const key = `${obj.Country}${obj["New Lv1−Lv2"]}`;
         if (!res[key]) {
            res[key] = { ...obj, count: 0 };
         };
         res[key].count += 1;
      });
   return Object.values(res);
};
console.log(convert(arr));

Đầu ra

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

[
   { Country: 'BR', 'New Lv1-Lv2': '#N/A', count: 2 },
   { Country: '', 'New Lv1-Lv2': 'test', count: 1 }
]