计算重复数据并聚集JavaScript中的对象数组

假设我们有一个像这样的对象数组-

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

我们需要编写一个JavaScript函数,该函数接受一个这样的对象数组。该函数创建并返回一个新的数组,其中不重复任何对象(重复表示“ Country”属性具有相同值的对象。)

此外,该函数应为每个对象分配一个count属性,该属性表示它们出现在原始数组中的次数。

示例

为此的代码将是-

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

输出结果

控制台中的输出将是-

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