js 数组对象去重
时间: 2025-06-05 17:15:58 浏览: 19
### JavaScript 数组对象去重方法
在前端开发中,数组对象的去重是一个常见需求。以下是几种常用的实现方式:
#### 使用 `Map` 和 `Array.prototype.filter()` 进行去重
通过利用 `Map` 的键唯一性特性,可以高效地去除数组中的重复项。
```javascript
let data = [
{ name: 'DFG', apply_phone: '131****8569' },
{ name: '李三', apply_phone: '150****8859' },
{ name: '网三', apply_phone: '176****8666' },
{ name: 'DFG', apply_phone: '131****8569' }
];
let uniqueData = data.filter((item, index) => {
const map = new Map();
return !map.has(item.apply_phone) && (map.set(item.apply_phone, true));
});
console.log(uniqueData);
```
这种方法的核心在于使用 `Map` 存储已遍历过的电话号码作为键[^3]。
---
#### 使用 `reduce()` 方法进行去重
借助 `reduce()` 函数,可以在累积过程中过滤掉重复的对象。
```javascript
let uniqueDataReduce = data.reduce((acc, current) => {
const x = acc.find(item => item.apply_phone === current.apply_phone);
if (!x) {
acc.push(current);
}
return acc;
}, []);
console.log(uniqueDataReduce);
```
此代码片段展示了如何通过累加器来构建一个新的无重复数组[^2]。
---
#### 利用 `Set` 结合自定义逻辑
如果目标字段(如 `apply_phone`)是唯一的,则可以通过 `Set` 来存储这些值并排除重复项。
```javascript
let seenPhones = new Set();
let uniqueDataSet = data.filter(item => {
if (seenPhones.has(item.apply_phone)) {
return false; // 如果已经存在则跳过
} else {
seenPhones.add(item.apply_phone); // 否则加入集合
return true;
}
});
console.log(uniqueDataSet);
```
上述代码实现了基于特定属性的去重功能[^4]。
---
#### 性能对比与适用场景分析
不同的去重方法适用于不同规模的数据集以及具体业务需求。对于小型数据集而言,任何一种方法都可以满足性能要求;但对于大型数据集来说,推荐优先考虑时间复杂度较低的方式,比如基于哈希表(即 `Map` 或 `Set`)的技术方案。
---
### 示例总结
以上三种方法均能够有效完成 JavaScript 中数组对象的去重任务。开发者可以根据实际项目情况和个人偏好选择最适合自己的解决方案。
阅读全文
相关推荐


















