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

JavaScript如何移除数组中所有出现过多次的重复值

实现思路

要实现「移除所有重复出现的数值,仅保留只出现过一次的元素」的需求,核心分为两步:

  1. 先统计数组中每个元素的出现次数
  2. 遍历原数组,筛选出出现次数恰好为1的元素即可
不同语言代码实现

JavaScript 实现

const arr = [1,2,3,2,3,5];
// 统计元素出现次数
const countMap = arr.reduce((map, num) => {
  map.set(num, (map.get(num) || 0) + 1);
  return map;
}, new Map());
// 筛选仅出现一次的元素
const result = arr.filter(num => countMap.get(num) === 1);
console.log(result); // 输出 [1,5]

Python 实现

from collections import Counter

arr = [1,2,3,2,3,5]
count = Counter(arr)
result = [num for num in arr if count[num] == 1]
print(result) # 输出 [1,5]

Java 实现

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class UniqueElementFilter {
    public static void main(String[] args) {
        List<Integer> arr = Arrays.asList(1,2,3,2,3,5);
        // 统计元素出现次数
        Map<Integer, Integer> countMap = new HashMap<>();
        for (int num : arr) {
            countMap.put(num, countMap.getOrDefault(num, 0) + 1);
        }
        // 筛选仅出现一次的元素
        List<Integer> result = arr.stream()
                .filter(num -> countMap.get(num) == 1)
                .collect(Collectors.toList());
        System.out.println(result); // 输出 [1,5]
    }
}
注意事项
  • 上述实现均保留了原数组中元素的相对顺序,如果不需要保留顺序,可以直接遍历统计结果筛选,性能更高
  • 针对超大数组,推荐使用哈希表统计的方案,时间复杂度为O(n),仅需遍历数组两次即可完成操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:48:02