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

已实现数组去重,如何让重复次数最多元素置于新数组首位?

数组去重并优先排列重复次数最多的元素

要实现去重后让重复次数最多的元素排在首位,需要先统计元素的出现频率,再基于频率排序去重后的数组,具体步骤如下:

1. 统计元素出现次数

使用reduce遍历原数组,生成一个记录每个元素出现次数的对象:

const source = [2, 9, 9, 1, 6];
const countMap = source.reduce((acc, item) => {
  acc[item] = (acc[item] || 0) + 1;
  return acc;
}, {});

执行后countMap的值为{2:1, 9:2, 1:1, 6:1}。

2. 去重并按频率排序

可以选择两种去重方式,再结合频率排序:

方式一:使用Set去重(简洁高效)

const ans = [...new Set(source)].sort((a, b) => countMap[b] - countMap[a]);
console.log(ans); // 输出 [9, 2, 1, 6]

new Set(source)会保留元素在原数组中首次出现的顺序,sort方法通过对比两个元素的出现次数,让次数多的元素排在前面。

方式二:沿用你原有的filter去重逻辑

const uniqueArr = source.filter((item, index, arr) => arr.indexOf(item) === index);
const ans = uniqueArr.sort((a, b) => countMap[b] - countMap[a]);
console.log(ans); // 输出 [9, 2, 1, 6]

效果和方式一完全一致,只是保留了你原本的去重写法。

补充说明

如果存在多个元素出现次数相同的情况(比如原数组是[2,2,9,9,1,6]),排序后会保持它们在原数组中首次出现的顺序,最终输出顺序由元素首次出现的位置决定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35