话不多说,直接上例子
let a = [{ id: 1, name: 'aa'}, { id: 2, name: 'bb'}, { id: 3, name: 'cc'}, { id: 1, name: 'sad'}]
let res = new Map();
let b = []
b = a.filter((obj) => {
return !res.has(obj.id) && res.set(obj.id, 1)
});
//简写: b = a.filter((obj) => !res.has(obj.id) && res.set(obj.id, 1));
console.log(b);
//[{id: 1, name: 'aa'}, {id: 2,name: 'bb'}, { id: 3,name: 'cc'}]
主要用到 map的set方法与has方法;
需要详细了解请看这篇文章Map()和Set()
var x=new Map(); x.set(‘a’,‘b’)添加键值 x.has(‘a’)判断是否存在某个键值,返回true或false
先!res.has(obj.id),判断这个map里面是否存在这个id(键或者值),不存在则添加到map里,满足filter的return条件
如果!res.has(obj.id)为false,则这个map中已存在,不执行res.set(obj.id, 1)),不添加到map中,不满足filter的return条件