JS查找数组中重复元素的方法详解
时间: 2024-10-10 21:17:31 浏览: 43
详解JS取出两个数组中的不同或相同元素
JavaScript中有多种方法可以查找数组中的重复元素。以下是几种常见的方法:
1. **使用Set数据结构**:
```javascript
function findDuplicates(arr) {
return [...new Set(arr)].filter((item, index, self) => self.indexOf(item) !== index);
}
```
这里Set是一种不包含重复值的数据结构,通过转换为Set再回转数组,可以找出不重复的元素,然后过滤掉它们。
2. **使用Map对象**:
```javascript
function findDuplicates(arr) {
let map = new Map();
return arr.filter(value => map.has(value) && !map.get(value++)).slice(0, -1); // 由于Map的迭代器会跳过最后一个添加的键值对,所以要去掉最后一个元素
}
```
使用Map存储已遍历过的元素作为键,如果遇到重复元素则返回。
3. **双重循环**:
```javascript
function findDuplicates(arr) {
let duplicates = [];
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
duplicates.push(arr[i]);
break;
}
}
}
return duplicates;
}
```
这种方法逐个比较数组中的元素,发现重复就加入结果数组。
4. **使用lodash库** (第三方库):
```javascript
const _ = require('lodash');
function findDuplicates(arr) {
return _.difference(_.uniq(arr), arr);
}
```
Lodash库提供了方便的函数处理数组,`_.difference`能找出两个数组的不同元素,而`_.uniq`去重后找出差异就是重复项。
阅读全文