数组对象多个属性同时相同去重
使用场景: 我们在对某个数组对象去重时通常是针对某个属性(比如id)进行去重,这种实现起来比较简单,但会有情况需要我们让对象中多个属性都相同时才算重复进行去重,就可以用到下面方法
需要去重的数据
const arr = [
{
name: '小明',
age: 20
},
{
name: '小李',
age: 20
},
{
name: '小明',
age: 20
},
{
name: '小明',
age: 22
},
{
name: '小明',
age: 20
},
{
name: '小张',
age: 22
}
]
关键代码
这里我们是对name和age都相等的情况进行去重,如果需要两个以上的属性可以在filterKey后面继续加属性即可
const hasObj = {}
const arr1 = arr.reduce((total, next) => {
const filterKey = next.name + next.age
hasObj[filterKey] ? '' : hasObj[filterKey] = true && total.push(next)
return total
}, [])
去重后的数据
console.log('去重前:', arr)
console.log('去重后:', arr1)