最近的开发中,一直有用到这个需求,但是需要使用的时候,都是靠百度的,觉得自己可能平时用的比较多,所以今天可能特意写一下,方便以后自己使用 首先我们说一下,我所谓的这个对象去重,是对象中的某一项相等即为重复,当然下面我也会写一下真正的对象去重
- 双循环
let arr = [
{
name: 'zhangsan',
age: 14
},
{
name: 'lisi',
age: 14
}
]
let arr2 = []
for(let i = 0; i < arr.length; i++) {
if (i === 0) {
arr2.push(arr[i])
} else {
arr2.forEach(item => {
if(item.age !== arr[i].age) {
arr2.push(arr[i])
}
})
}
}
- for循环
通过借助一个辅助对象来实现
let arr = [
{
name: 'zhangsan',
age: 14
},
{
name: 'lisi',
age: 14
}
]
var result = []
let obj = {}
for(let i = 0; i < arr.length; i++) {
if(!obj[arr[i].age]){
result.push(arr[i]);
obj[arr[i].age] = true;
}
}
console.log(result)
- reduce
let arr2 = [
{
name: 'zhangsna',
age: 14
},
{
name: 'lisi',
age: 14
}
]
let arr3 = {} // 辅助数组
let arr4 = arr2.reduce((sum, current) => {
if (!arr3[current.age]) { // 判断当前age是否已经在arr3里面
// 如果不在
arr3[current.age] = true // 则将当前age值设置true(可以是其他的)
sum.push(current) // 然后push进当前数组
}
return sum
}, [])
console.log(arr4)
- 真正的js数组去重
let arr6 = [
{
name: 'zhangsna',
age: 14
},
{
name: 'zhangsna',
age: 14
}
]
let arr7 = {}
let arr5 = arr6.reduce((sum, current) => {
if (!arr7[JSON.stringify(current)]) {
arr7[JSON.stringify(current)] = true
sum.push(current)
}
return sum
}, [])