项目场景:
提示:数组对象去重(百度的,笔记记录)
var arr=[{id:0, name:'aa'}, {id:0,name:'a1'}, {id:1,name:'aa'}, {id:2,name:'aa'}]
//封装成方法,通过某个属性去重
function filterRepeat(arr,prop){
return arr.filter(function(element,index,self) {
return self.findIndex(el => el[prop] == element[prop]) === index
})
}
//自定义去重方法
function filterRepeat2(arr,compareFn){
return arr.filter(function(element,index,self){
return self.findIndex(el=>compareFn(el,element))===index
})
}
//加载到数组原型上
Array.prototype.filterRepeat=function(){
if(typeof arguments[0]=='string') return filterRepeat(this,arguments[0])
return filterRepeat2(this,arguments[0])
}
var newArr = arr.filterRepeat(function(a, b){return a.id == b.id && a.name == b.name})
console.log(newArr)
# 场景: **id相同名称不同** **id不同名称相同**