JS中数组对象去重

126 阅读1分钟

话不多说,直接上例子

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条件