数组对象去重方法

103 阅读1分钟

关于数组对象去重,在项目中是很常见的需求,以下是我针对于这个找到的一些我认为比较好一点的方案。

  1. 使用.filter()和.findIndex()结合的方法:
const arr = [{id: 1, name: "a"}, {id: 2, name: "b"}, {id: 1, name: "c"}, {id: 3, name: "d"}];
const uniqueArr = arr.filter((item, index) => arr.findIndex(i => i.id === item.id) === index);
console.log(uniqueArr) // [{id: 1, name: "a"}, {id: 2, name: "b"}, {id: 3, name: "d"}]

2.使用.reduce()方法:

const arr = [{id: 1, name: "a"}, {id: 2, name: "b"}, {id: 1, name: "c"}, {id: 3, name: "d"}]; 
const uniqueArr = arr.reduce((acc, curr) => { 
    if (!acc.find(item => item.id === curr.id)) { 
        acc.push(curr); 
    } 
    return acc; 
   }, []);
console.log(uniqueArr) // [{id: 1, name: "a"}, {id: 2, name: "b"}, {id: 3, name: "d"}]

3.使用Map方法:

const arr = [{id: 1, name: "a"}, {id: 2, name: "b"}, {id: 1, name: "c"}, {id: 3, name: "d"}]; 
const uniqueArr = [...new Map(arr.map(item => [item.id, item])).values()];
console.log(uniqueArr) // [{id: 1, name: "a"}, {id: 2, name: "b"}, {id: 3, name: "d"}]