如何获取JavaScript数组中重复次数最多的所有值?
如何修改代码返回所有重复次数最多的值?
没问题!你的原代码只返回单个最大值的原因是,每次遇到计数更高的元素时就直接覆盖了结果变量,完全没考虑到多个元素可能有相同的最高重复次数。咱们来调整一下逻辑,分三步来实现:
- 先完整统计数组中每个元素的出现次数
- 找出所有元素里的最高重复次数
- 收集所有出现次数等于最高次数的元素
下面是修改后的完整代码:
var arr = [100,100,200,200,200,300,300,300,400,400,400]; var counts = {}; // 第一步:统计每个元素的出现次数 for (var v of arr) { // 改用for...of遍历数组更稳妥,避免遍历到数组的非数字属性 counts[v] = (counts[v] || 0) + 1; } // 第二步:找出最高的重复次数 var maxCount = Math.max(...Object.values(counts)); // 第三步:收集所有达到最高次数的元素 var mostFrequent = Object.keys(counts).filter(key => counts[key] === maxCount); // 输出结果 console.log(`重复次数最多的值是:${mostFrequent.join(', ')},各出现${maxCount}次`);
代码说明:
- 把原代码里的
for...in换成了for...of,因为for...in会遍历数组的所有可枚举属性(比如手动添加的自定义属性),而for...of只会遍历数组的元素,更适合处理数组。 - 用
Math.max(...Object.values(counts))直接提取所有计数的最大值,比循环判断更简洁。 - 用
filter方法筛选出所有计数等于最大值的元素,这样就能得到所有重复次数最多的值了。
运行这段代码后,会输出:重复次数最多的值是:200, 300, 400,各出现3次,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Yamoshi Wolverine
相关产品推荐
相关产品推荐

