将具有重复值的数组转换为带有重复出现次数的对象 - JavaScript


假设我们有一个包含一些重复条目的数组 string,如下所示:

const arr = ['California','Texas','Texas','Texas','New
York','Missouri','New Mexico','California'];

我们需要编写一个 JavaScript 函数,该函数采用一个这样的数组。然后,我们的函数应该构造一个对象数组,其中包含每个唯一条目的对象以及一个 "count" 属性,该属性包含其在原始数组中的计数。

因此,上述数组的最终输出看起来应如下所示:

const output = [
   {'name':'California', 'count':2},
   {'name':'Texas', 'count':3},
   {'name':'New York', 'count':1},
   {'name':'Missouri', 'count':1},
   {'name':'New Mexico', 'count':1},
];

示例

代码如下:

const arr = ['California','Texas','Texas','Texas','New York','Missouri','New Mexico','California'];
const findOccurrences = (arr = []) => {
   const res = [];
   arr.forEach(el => {
      const index = res.findIndex(obj => {
         return obj['name'] === el;
      });
      if(index === -1){
         res.push({
            "name": el,
            "count": 1
         })
      }
      else{
         res[index]["count"]++;
      };
   });
   return res;
};
console.log(findOccurrences(arr));

输出

控制台中的输出将如下所示:

[
   { name: 'California', count: 2 },
   { name: 'Texas', count: 3 },
   { name: 'New York', count: 1 },
   { name: 'Missouri', count: 1 },
   { name: 'New Mexico', count: 1 }
]

更新日期: 23-11-2020

645 次浏览

开启你的职业生涯

完成课程,获得认证

开始吧
广告
© . All rights reserved.