let obj = {};
let peon = arr.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);这句没看懂
let obj = {};
let peon = arr.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);这句没看懂
它不是啥高级的去重,这里的意思之去重arr数组中的有重复id的对象,你没看懂的这句也很简单,就是声明一个对象obj保存id,如果这个id之前已经保存在obj中了说明已经遇到过一次同id了,就一个空字符串""啥也不干,如果不存在就保存进obj并保存到结果cur中去。
let obj = {};
let arr = [
{ id: 0, a: 1 },
{ id: 1, b: 5 },
{ id: 2 },
{ id: 2 },
{ id: 1 },
];
let peon = arr.reduce((cur, next) => {
obj[next.id] ? "" : (obj[next.id] = true && cur.push(next));
return cur;
}, []); //
console.log(peon); //[{ id: 0, a: 1}, { id: 1, b: 5 }, { id: 2 }]
用reduce看的真让人费解,用map比这个舒服多了。
let obj = {};
let arr = [
{ id: 0, a: 1 },
{ id: 1, b: 5 },
{ id: 2 },
{ id: 2 },
{ id: 1 },
];
let res = [];
arr.map((cur) => {
const { id } = cur;
obj[id] ? null : res.push(cur) && (obj[id] = true);
});
console.log(res); //[{ id: 0, a: 1}, { id: 1, b: 5 }, { id: 2 }]