js数组中去重的方法?
时间: 2025-02-22 21:25:17 浏览: 24
### JavaScript 数组去重方法
#### 使用 `Set` 数据结构
在现代浏览器环境中,推荐使用 ES6 引入的 `Set` 数据结构来进行数组去重。由于 `Set` 自动过滤掉重复项,因此非常适合用于此目的。
```javascript
const originalArray = [1, 2, 3, 2, 4, 5, 1];
// 转换回数组的方式有两种:
const uniqueArrayUsingSpreadOperator = [...new Set(originalArray)];
console.log(uniqueArrayUsingSpreadOperator); // 输出: [1, 2, 3, 4, 5]
const uniqueArrayUsingArrayFrom = Array.from(new Set(originalArray));
console.log(uniqueArrayUsingArrayFrom); // 输出: [1, 2, 3, 4, 5]
```
这种方法简洁明了,并且性能较好[^1]。
#### 利用 `reduce()` 和 `includes()`
对于不支持最新 ECMAScript 版本的老环境或者有特殊需求的情况下,可以通过组合 `reduce()` 函数与 `includes()` 来达到相同的效果:
```javascript
const arr = [1, 2, 3, 2, 4, 5, 1];
const uniqueArr = arr.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5]
```
这段代码通过遍历原数组并将唯一值累积到一个新的数组中实现了去重功能[^2]。
#### 运用临时对象存储键名
另一种常见的做法是创建一个辅助性的对象作为哈希表来追踪已经遇到过的元素:
```javascript
const originalArray = [1, 2, 3, 2, 4, 1, 5];
let uniqueArray = [];
const tempObject = {};
originalArray.forEach(item => {
if (!(item in tempObject)) {
tempObject[item] = true;
uniqueArray.push(item);
}
});
console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5]
```
这种方式特别适用于处理包含字符串或其他可作为有效属性名称的数据类型的数组[^4]。
阅读全文
相关推荐


















