JavaScript中如何查找数组重复值并将其存入新数组
数组重复元素提取实现
以下为JavaScript语言的实现方案,核心逻辑可复用至其他编程语言:
实现代码
如果你需要提取去重后的重复元素列表(每个重复元素只保留1次),可以用以下代码:
const originArr = [3,4,63,5,5,1,5,2,63,2,4,5,6,2,4,56,74,2,671,1,4,5,7,3,6]; // 统计每个元素的出现次数 const countMap = {}; originArr.forEach(item => { countMap[item] = (countMap[item] || 0) + 1; }); // 筛选出现次数大于1的元素 const duplicateArr = Object.keys(countMap).filter(key => countMap[key] > 1).map(Number); console.log(duplicateArr); // 输出结果:[1,2,3,4,5,6,63]
如果你需要提取所有重复出现的元素实例(比如元素5出现了5次,结果里保留后面4次重复的实例),可以用以下代码:
const originArr = [3,4,63,5,5,1,5,2,63,2,4,5,6,2,4,56,74,2,671,1,4,5,7,3,6]; const existed = new Set(); const duplicateArr = []; originArr.forEach(item => { existed.has(item) ? duplicateArr.push(item) : existed.add(item); }); console.log(duplicateArr); // 输出结果:[5,5,63,2,4,5,2,4,2,1,4,5,3,6]
运行逻辑说明
去重版重复元素列表逻辑
- 第一步遍历原数组,用对象
countMap做次数统计,key为数组元素值,value为该元素对应的出现次数 - 第二步遍历
countMap的所有键,筛选出值大于1的键,转换为数字类型后即得到所有出现过至少2次的元素集合,每个重复元素仅保留1次
全量重复实例列表逻辑
- 初始化Set集合记录已经出现过的元素,同时初始化空数组存储结果
- 遍历原数组的每一个元素:如果当前元素已经在Set中存在,说明是重复元素,直接推入结果数组;如果不存在,就把该元素加入Set做标记
- 最终得到的结果数组包含所有重复出现的元素实例,顺序和原数组中重复出现的顺序完全一致
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

