js 对象数组去重 (高阶版)
//定义对象数组
const objArr = [
{"id": 1, "name": "李四"},
{"id": 2, "name": "张三"},
{"id": 1, "name": "李四"},
{"id": 1, "name": "李四"},
{"id": 5, "name": "王麻子"}
]
方法一:采用reduce
function arrSet(arr){
let obj = {}
let newArr = arr.reduce((data,item)=>{
obj[item.id] ? '' : obj[item.id] = true && data.push(item)
return data
),[]}
console.log(newArr)
//{"id": 1, "name": "李四"},{"id": 2, "name": "张三"}, {"id": 5, "name": "王麻子"}
}
arrSet(objArr)
方法二:采用filter 加 Map
function arrSet(arr){
let newMap = new Map()
let newArr = arr.filter(item => !newMap.has(item.id) && newMap.set(item.id,1))
console.log(newArr)
//{"id": 1, "name": "李四"},{"id": 2, "name": "张三"}, {"id": 5, "name": "王麻子"}
}
arrSet(objArr)