js中对象数组根据对象id去重

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() 方法的特性,把自身中重复的元素去掉,最后得到没有重复元素的新数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值