删除具有相同ID的对象- Javascript

qjp7pelc  于 2023-04-28  发布在  Java
关注(0)|答案(3)|浏览(142)

我有一个这样的数组。

0: {id: 4, country: Japan},
1: {id: 5, country: Korea},
2: {id: 6, country: Philippines},
3: {id: 6, country: Philippines}

如何删除具有相同ID的两个记录?所以返回的数据应该是这样的。

0: {id: 4, country: Japan},
1: {id: 5, country: Korea}

我该怎么解决这个问题?我尝试了这里特定主题中描述的方法,但没有效果

ui7jx7zq

ui7jx7zq1#

对于数组中的每个元素,如果存在与之相等的元素,则将其标记为“待移除”,同时移除相等的元素。i元素在最后被移除。

function removeDuplicates(a){
  for(let i = 0 ; i < a.length ; i++){
    let toRemove = false;
    for(let j = 0; j < a.length ; j++){
      if(i != j && a[i].id == a[j].id){
        toRemove = true;
        a.splice(j,1);
      }
    }
    if(toRemove) a.splice(i,1)
  }
  return a;
}
zwghvu4y

zwghvu4y2#

这是另一种方法

let data = 
[
{id: 4, country: "Japan"},
{id: 5, country: "Korea"},
{id: 6, country: "Philippines"},
{id: 6, country: "Philippines"}

]; 

data.map((s, i) => {
 if (i>0 &&s.id != data[i- 1].id) {
  return s;
 }else{
  delete data[i- 1];
 }
});
57hvy0tb

57hvy0tb3#

const data = [
    {id: 4, country: 'Japan'},
    {id: 5, country: 'Korea'},
    {id: 6, country: 'Philippines'},
    {id: 6, country: 'Philippines'}
];

const duplicates = data.filter((obj, index, arr) => {
  return arr.map(mapObj => mapObj.id).indexOf(obj.id) !== index;
});

const uniqueData = data.filter((obj, index, arr) => {
  return arr.map(mapObj => mapObj.id).indexOf(obj.id) === index;
});

console.log("Duplicates:", duplicates);
console.log("Unique data:", uniqueData);

相关问题