如何根据多个条件从数组中删除重复对象

How to remove duplicate objects from an array based on more than one criteria

我正在尝试通过在对象内比较 1 个以上的字段来从数组中找到重复的对象。

我想将对象的 2 个字段与同一数组的其他对象进行比较。

我只想忽略对象中的第 3 个字段 link 的名称和 lname

  values = [{
    name: 'newton',
    lname: 'king',
    link: '123'
  }, {
    name: 'tom',
    lname: 'kurtz',
    link: '123'
  }, {
    name: 'newton',
    lname: 'king',
    link: '456'
  }, {
    name: 'jan',
    lname: 'heckal',
    link: '123'
  }]

如何找到并删除输出如下所示的重复对象

  values = [{
    name: 'newton',
    lname: 'king',
    link: '123'
  }, {
    name: 'tom',
    lname: 'kurtz',
    link: '123'
  }, {
    name: 'jan',
    lname: 'heckal',
    link: '123'
  }]

这几乎是 Remove duplicate objects from an array using javascript

的重复

 var arrResult=[],
     arr = [{
    name: 'newton',
    lname: 'king',
    link: '123'
  }, {
    name: 'tom',
    lname: 'kurtz',
    link: '123'
  }, {
    name: 'newton',
    lname: 'king',
    link: '456'
  }, {
    name: 'jan',
    lname: 'heckal',
    link: '123'
  }]

for (i = 0, n = arr.length; i < n; i++) {
    var item = arr[i];
    arrResult[ item.name + " - " + item.lname ] = item; // create associative array
}

var i = 0;
var nonDuplicatedArray = [];    
for(var item in arrResult) {
    nonDuplicatedArray[i++] = arrResult[item]; // copy the objects that are now unique
}
console.log(nonDuplicatedArray)