JS查找数组中重复元素有多少个的方法详解
时间: 2024-10-10 20:17:04 浏览: 49
JS查找数组中重复元素的方法详解
JavaScript 中查找数组中重复元素的数量可以使用多种方法。这里我会列举几种常见的方法:
**1. 使用Set数据结构**
```javascript
function countDuplicates(arr) {
return arr.length - arr.filter((value, index, self) => self.indexOf(value) !== index).length;
}
```
Set是一个不包含重复值的集合,所以`arr.filter()`后的结果会排除所有重复元素,两者差就是重复元素的数量。
**2. 使用reduce()和indexOf()方法**
```javascript
function countDuplicates(arr) {
let count = 0;
return arr.reduce((acc, curr) => acc[curr]++ || (acc[curr] = 1), {});
.filter(value => value > 1);
}
```
通过`reduce()`遍历数组并统计每个元素出现的次数,然后筛选出出现次数大于1的元素作为重复项。
**3. ES6 Map数据结构**
```javascript
function countDuplicates(arr) {
const map = new Map();
return arr.filter(value => map.has(value) ? true : (map.set(value, true), false));
}
```
Map同样可以存储键值对,这里用于存储元素是否出现过,如果出现过则返回true,统计长度即为重复次数。
**4. 使用双重循环**
```javascript
function countDuplicates(arr) {
let count = 0;
for(let i = 0; i < arr.length; i++) {
for(let j = i + 1; j < arr.length; j++) {
if(arr[i] === arr[j]) {
count++;
}
}
}
return count;
}
```
这是最基础的遍历方法,时间复杂度较高,适用于小规模数组。
阅读全文