JavaScript数组对象去重的几种实现方式
作者:代码拾荒时间:2026-10-26 13:22:34浏览:627
本文详细介绍JavaScript中数组对象去重的四种常用方法,包括利用Map对象、双层for循环、数组reduce方法及对象属性判断。重点解析各方法的代码实现与性能差异,并特别指出splice方法会修改原数组的注意事项,帮助开发者根据实际需求选择合适方案。
JavaScript数组对象去重实现方案
假设存在如下数组对象数据:
let repeatData = [
{ id: 1, name: 'sun', age: 18 },
{ id: 1, name: 'sun', age: 18 },
{ id: 2, name: 'baozi', age: 20 },
{ id: 1, name: 'sun', age: 18 },
{ id: 3, name: 'lele', age: 3 },
{ id: 2, name: 'baozi', age: 20 }
]
目标是移除id重复的数据,最终得到去重后的结果。

方法一:利用Map对象。Map对象用于存储键值对,其中任何值(包括对象或原始值)均可作为键或值。当Map中存在重复键时,后设置的值会覆盖先前的值。
利用Map对象去重
// 利用map对象
let map = new Map()
repeatData.forEach(item => {
map.set(item.id, item)
})
let newData = [...map.values()]
console.log(newData, 'newData');
方法二:使用双层for循环。
双层for循环去重
for (let i = 0; i < repeatData.length; i++) {
for(let j = i + 1; j < repeatData.length; j++) {
if (repeatData[i].id === repeatData[j].id) {
repeatData.splice(j, 1)
j--
}
}
}
console.log(repeatData, 'repeatData');
方法三:利用数组的reduce方法。
利用reduce方法去重
let newObj = {};
repeatData = repeatData.reduce((preVal, curVal) => {
newObj[curVal.id] ? '' : newObj[curVal.id] = preVal.push(curVal);
return preVal
}, [])
console.log(repeatData, 'repeatData');
方法四:利用对象的属性进行判断。
利用对象属性去重
let newObj = {}, newArr = []
repeatData.forEach(item => {
if (!newObj[item.id]) {
newObj[item.id] = newArr.push(item)
}
})
console.log(newArr, 'newArr');
注意:第二种方法中使用的splice方法会直接修改原数组。
在JavaScript数组操作中,以下方法会改变原数组:
修改原数组的方法说明
| 方法 | 用法 |
| push | 向数组的末尾添加一个或更多元素,并返回新的长度 |
| unshift | 向数组的开头添加一个或更多元素,并返回新的长度 |
| pop | 删除数组的最后一个元素并返回删除的元素 |
| shift | 删除并返回数组的第一个元素 |
| sort | 对数组的元素进行排序 |
| splice | 从数组中添加或删除元素 |
| reverse | 反转数组的元素顺序 |
至此,关于JavaScript数组对象去重的几种方法介绍完毕,更多相关JavaScript数组对象去重内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
作者最新文章
5款主流JS在线运行工具对比:CodePen、JSFiddle与StackBlitz怎么选
2026-11-05 17:04:04
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
JavaScript函数定义的三种方式:声明、表达式与箭头函数
2026-11-05 13:50:55
