对象数组根据属性去重
1. Map filter
const removal = (arr,attr) =>{
const res = new Map()
return arr.filter((item)=>{
return !res.has(item[attr]) && res.set(item[attr],1)
})
}
2. Set filter
const removal = (arr,attr) =>{
const res = new Set()
return arr.filter((item)=>{
return !res.has(item[attr]) && res.add(item[attr],1)
})
}
3. filter map
去重数组或者对象数组
const removal=(arr,attr)=>{
return arr.filter((item,index)=>{
let temp = [];
if(attr){
arr.map((item) => {
return temp.push(item[attr])
})
return temp.lastIndexOf(item[attr]) == index
// 要后面的 去除前面的
}
else{
return arr.indexOf(item) == index
}
})
}
4. reduce
const removal = (arr,attr) =>{
const hash = {};
return arr.reduce((item, next) => {
hash[next[attr]] ? "" : hash[next[attr]] = true && item.push(next);
return item
},[])
}
5. reduceRight (倒序)
const removal = (arr,attr) =>{
const hash = {};
return arr.reduceRight((item, next) => {
hash[next[attr]] ? "" : hash[next[attr]] = true && item.push(next);
return item
},[])
}