You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取JavaScript数组中重复次数最多的所有值?

如何修改代码返回所有重复次数最多的值?

没问题!你的原代码只返回单个最大值的原因是,每次遇到计数更高的元素时就直接覆盖了结果变量,完全没考虑到多个元素可能有相同的最高重复次数。咱们来调整一下逻辑,分三步来实现:

  1. 先完整统计数组中每个元素的出现次数
  2. 找出所有元素里的最高重复次数
  3. 收集所有出现次数等于最高次数的元素

下面是修改后的完整代码:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:05:32