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

如何在JavaScript中找出数组中出现次数最多的元素?

解决思路

方法一:对象统计+遍历找最大值

  1. 统计地点出现次数
    用reduce遍历数组,生成一个记录每个地点出现次数的对象:
const locationCount = visitedLocations.reduce((countObj, loc) => {
  countObj[loc] = (countObj[loc] || 0) + 1;
  return countObj;
}, {});
  1. 定位次数最多的地点
    遍历统计对象,记录次数最高的地点:
let mostVisited = null;
let maxTimes = 0;

for (const [loc, times] of Object.entries(locationCount)) {
  if (times > maxTimes) {
    maxTimes = times;
    mostVisited = loc;
  }
}

最终mostVisited就是出现次数最多的地点。

方法二:处理多地点次数并列的情况

如果有多个地点出现次数相同且都是最大值,用以下方式获取所有符合条件的地点:

// 先获取最大出现次数
const maxCount = Math.max(...Object.values(locationCount));
// 筛选出所有次数等于最大值的地点
const topLocations = Object.keys(locationCount).filter(loc => locationCount[loc] === maxCount);

方法三:用Map处理复杂类型的location

如果location是对象而非字符串,普通对象统计会失效,改用Map更稳妥:

const locationMap = new Map();
visitedLocations.forEach(loc => {
  // 对象转成唯一字符串作为键
  const key = typeof loc === 'object' ? JSON.stringify(loc) : loc;
  locationMap.set(key, (locationMap.get(key) || 0) + 1);
});

// 找出次数最多的地点
let mostVisited = null;
let maxCount = 0;
for (const [key, count] of locationMap.entries()) {
  if (count > maxCount) {
    maxCount = count;
    // 还原对象类型的地点
    mostVisited = typeof key === 'string' && key.startsWith('{') ? JSON.parse(key) : key;
  }
}

内容的提问来源于stack exchange,提问作者hoddypeak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:06:22