如何统计JavaScript数组中元素出现次数并转换为指定结构的对象数组
解决方案
你可以先通过reduce统计各元素的出现次数,再将统计结果转换为符合要求的对象数组,示例代码如下:
const arr = ['M', 'M', 'M', 'S', 'S', 'S', 'R', 'C', 'S', 'S', 'S'] // 第一步:统计每个元素的出现次数 const countMap = arr.reduce((acc, curr) => { acc[curr] = (acc[curr] || 0) + 1 return acc }, {}) // 第二步:转换为要求的对象数组 const result = Object.entries(countMap).map(([name, duplicates]) => ({ name, duplicates })) console.log(result)
输出结果:
[ { name: 'M', duplicates: 3 }, { name: 'S', duplicates: 6 }, { name: 'R', duplicates: 1 }, { name: 'C', duplicates: 1 } ]
原代码问题说明
- 你错误地将数组类型的累加器当做普通对象使用,给数组添加了非索引的自定义属性,不符合最终需要的数组结构要求
- 统计对象的键名使用了动态的元素值,没有使用要求的
name和duplicates固定键名
内容的提问来源于stack exchange,提问作者Tyler Morales
相关产品推荐
相关产品推荐

