JavaScript2. 利用Array数组对象去除数组[1,2,3,4,2,5,6,2,7,2]当中的重复元素
时间: 2025-07-01 07:45:27 浏览: 10
### JavaScript Array 去重方法
在 JavaScript 中,可以通过多种方式对数组进行去重。以下是几种常见的方法及其代码示例:
#### 方法一:使用 Set
`Set` 是一种数据结构,它会自动去除重复的值。结合 `Array.from()` 或扩展运算符 (`...`) 可以轻松实现数组去重。
```javascript
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
这种方法简单高效,适用于大多数场景[^1]。
---
#### 方法二:使用 filter 和 indexOf
通过 `filter` 方法结合 `indexOf`,可以筛选出数组中第一次出现的元素,从而实现去重。
```javascript
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
此方法适合中小型数组,但对于大型数组可能性能较差。
---
#### 方法三:使用 reduce
利用 `reduce` 方法,可以将数组中的每个元素逐一添加到一个新数组中,同时确保不重复。
```javascript
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let uniqueArr = arr.reduce((acc, item) => {
if (!acc.includes(item)) acc.push(item);
return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
这种方法逻辑清晰,但性能取决于 `includes` 的查找效率。
---
#### 方法四:暴力去重法
通过双重循环逐一比较数组中的元素,删除重复项。这是一种较为基础的实现方式,但性能较差。
```javascript
function ArrayIsUnique(array) {
if (!Array.isArray(array)) return;
for (let i = 0; i < array.length; i++) {
if (array[i] === array[i + 1]) {
array.splice(i, 1);
i--;
}
}
return array;
}
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let uniqueArr = ArrayIsUnique(arr.sort());
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
需要注意的是,此方法需要先对数组排序[^1]。
---
#### 方法五:对象键值去重
通过创建一个临时对象,利用对象的键唯一性来去重。
```javascript
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let obj = {};
let uniqueArr = arr.filter(item => !obj[item] && (obj[item] = true));
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
这种方法适合处理基本数据类型(如数字和字符串)[^2]。
---
#### 方法六:Map 结构去重
利用 `Map` 数据结构的键唯一性特性,可以实现更灵活的去重逻辑。
```javascript
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let map = new Map();
let uniqueArr = arr.filter(item => !map.has(item.toString()) && map.set(item.toString(), true));
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
此方法适合处理复杂数据类型(如对象数组)[^2]。
---
#### 方法七:使用 Lodash 库
如果项目中允许使用第三方库,可以借助 Lodash 提供的 `_.uniq` 方法快速实现去重。
```javascript
let _ = require('lodash');
let arr = [1, 2, 3, 4, 2, 5, 6, 2, 7, 2];
let uniqueArr = _.uniq(arr);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6, 7]
```
Lodash 提供了丰富的工具函数,能够显著简化开发过程[^1]。
---
### 性能对比
- 对于小型数组,所有方法都可以接受。
- 对于大型数组,推荐使用 `Set` 或 `Map`,因为它们的时间复杂度较低。
- 避免使用暴力去重法,因为它的时间复杂度较高,性能较差。
阅读全文
相关推荐


















