js中对象数组根据对象id去重
可以使用 Array.filter() 方法结合 Array.findIndex() 方法来去重,具体实现如下:
const arr = [
{ id: 1, name: 'apple' },
{ id: 2, name: 'banana' },
{ id: 1, name: 'orange' },
{ id: 3, name: 'pear' }
];
const uniqueArr = arr.filter((item, index, self) => {
// 利用findIndex方法找到第一个与当前元素id相等的元素索引
const i = self.findIndex(t => t.id === item.id);
// 如果当前索引等于当前元素在self中的最初出现位置索引,则表示元素符合要求,不是重复元素,保留
return i === index;
});
const arr = [
{ id: 1, name: ‘apple’ },
{ id: 2, name: ‘banana’ },
{ id: 1, name: ‘orange’ },
{ id: 3, name: ‘pear’ }
];
const uniqueArr = arr.filter((item, index, self) => {
// 利用findIndex方法找到第一个与当前元素id相等的元素索引
const i = self.findIndex(t => t.id === item.id);
// 如果当前索引等于当前元素在self中的最初出现位置索引,则表示元素符合要求,不是重复元素,保留
return i === index;
});
console.log(uniqueArr); // [{ id: 1, name: ‘apple’ }, { id: 2, name: ‘banana’ }, { id: 3, name: ‘pear’ }]
上述代码利用了 Array.filter() 方法的特性,把自身中重复的元素去掉,最后得到没有重复元素的新数组。