对象数组去重的多种方法
方法1:使用临时对象
const items = [{id:1,name:'a'},{id:2,name:'b'},{id:1,name:'a'},{id:3,name:'c'},{id:2,name:'b'}
,{id:4,name:'d'},{id:1,name:'a'},{id:3,name:'c'},{id:4,name:'d'},{id:2,name:'b'}];
const items2 = [];
var o = {};
for(var i=0;i<items.length;i++){
if(!o[items[i].id]){
o[items[i].id] = true;
console.log(o)
items2.push(items[i]);
}
};
console.log(items2)
方法2: 使用map的has方法
const items = [{id:1,name:'a'},{id:2,name:'b'},{id:1,name:'a'},{id:3,name:'c'},{id:2,name:'b'}
,{id:4,name:'d'},{id:1,name:'a'},{id:3,name:'c'},{id:4,name:'d'},{id:2,name:'b'}];
const map = new Map();
for(let v of items){
if(!map.has(v.id)){
map.set(v.id,v.name)
}
};
console.log(map);
console.log([...map])
console.log([...map].map(([k,v])=>({id:k,name:v})))
const a = Array.from(map,([k,v])=>({id:k,name:v}));
console.log(a)
const map = new Map();
for(let v of items){
if(!map.has(v.id)){
map.set(v.id,v)
}
};
console.log(map);
console.log([...map.values()])
方法3:使用map配合数组的filter方法
const items = [{id:1,name:'a'},{id:2,name:'b'},{id:1,name:'a'},{id:3,name:'c'},{id:2,name:'b'}
,{id:4,name:'d'},{id:1,name:'a'},{id:3,name:'c'},{id:4,name:'d'},{id:2,name:'b'}];
const map = new Map();
const c = items.filter(v=>{
if(!map.has(v.id)){
return map.set(v.id,v.name)
}
});
console.log(c);
const map = new Map();
console.log(items.filter(v=>!map.has(v.id) && map.set(v.id,v.name)))