JavaScript如何移除数组中所有出现过多次的重复值
实现思路
要实现「移除所有重复出现的数值,仅保留只出现过一次的元素」的需求,核心分为两步:
- 先统计数组中每个元素的出现次数
- 遍历原数组,筛选出出现次数恰好为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
相关产品推荐
相关产品推荐

