如何通过 id 从对象数组中减少重复对象之一

问题描述 投票:0回答:1

我有一个对象数组:

const obj = [{
  id: 1,
  name: 'A'
}, {
  id: 1,
  name: 'A'
}, {
  id: 1,
  name: 'A'
}, {
  id: 2,
  name: 'A'
}, {
  id: 2,
  name: 'A'
}]

// this method returned me one object with id=1
const filter = obj.reduce((val, index) => {
  return index === val.findIndex(v => obj.id === v.id && obj.name === o.name)
})

当我按下按钮时,我想删除其中一个重复的对象。例如,我在一个数组中有 3 个 ID=1 的对象。我只想删除一个 ID=1 的对象,而不是两个。所以结果一定是这样的:

const obj = [{
  id: 1,
  name: 'A'
}, {
  id: 1,
  name: 'A'
}, {
  id: 2,
  name: 'A'
}, {
  id: 2,
  name: 'A'
}]
javascript arrays object filter reduce
1个回答
0
投票

您可以通过使用

id=1
查找第一个对象的索引,然后使用
Array.prototype.splice()
将其删除来实现此目的:

const obj = [ { id:1, name:'A' }, { id:1, name:'A' }, { id:1, name:'A' }, { id:2, name:'A' }, { id:2, name:'A' } ];

const targetId = 1;
const indexToRemove = obj.findIndex(item => item.id === targetId);

if (indexToRemove !== -1) {
  obj.splice(indexToRemove, 1);
}

console.log(obj);

© www.soinside.com 2019 - 2024. All rights reserved.