在Javascript中从数组中删除重复元素

2022-01-10 00:00:00 arrays duplicates javascript

我有一个包含对象电子邮件和 ID 的数组,所以我想删除具有相似 ID 的重复元素.

I have array with obejcts email and Id so I want delete duplicate elements who have similar ID's.

例子:

var newarray=[
    {
        Email:"test1@gmail.com",
        ID:"A"
    },
    {
        Email:"test2@gmail.com",
        ID:"B"
    },
    {
        Email:"test3@gmail.com",
        ID:"A"
    },
    {
        Email:"test4@gmail.com",
        ID:"C"
    },
    {
        Email:"test4@gmail.com",
        ID:"C"
    }
];

现在我需要删除具有 ID 的重复元素很常见.因此我期望最终的数组是

Now I need to delete Duplicate elements which have ID's are common.In the sence I am expecting final Array is

var FinalArray=[
    {
        Email:"test1@gmail.com",
        ID:"A"
    },
    {
        Email:"test2@gmail.com",
        ID:"B"
    },  
    {
        Email:"test5@gmail.com",
        ID:"C"
    }
];

推荐答案

使用 Array.prototype.filter 过滤掉元素并检查重复项,使用 temp 数组

Use Array.prototype.filter to filter out the elements and to keep a check of duplicates use a temp array

var newarray = [{
  Email: "test1@gmail.com",
  ID: "A"
}, {
  Email: "test2@gmail.com",
  ID: "B"
}, {
  Email: "test3@gmail.com",
  ID: "A"
}, {
  Email: "test4@gmail.com",
  ID: "C"
}, {
  Email: "test5@gmail.com",
  ID: "C"
}];
   
// Array to keep track of duplicates
var dups = [];
var arr = newarray.filter(function(el) {
  // If it is not a duplicate, return true
  if (dups.indexOf(el.ID) == -1) {
    dups.push(el.ID);
    return true;
  }

  return false;
  
});

console.log(arr);

相关文章