如何在多个键的 javascript 对象列表中查找唯一值

How do I find unique values in a list of javascript objects over multiple keys?

本文关键字:列表 对象 查找 唯一 javascript      更新时间:2023-09-26

我有一个javascript对象数组。下面是一个示例:

[{'first': 'Mary', 'last':'Smith', 'task':'managing'},
{'first': 'Mary', 'last':'Smith', 'task':'research'},
{'first': 'Henry', 'last':'Ford', 'task':'assembling'},
{'first':'Henry', 'last':'Winkler', 'task':'acting;}]

我想找到数组中名字和姓氏不同的所有元素。我正在寻找的输出形式如下:

[{'first': 'Mary', 'last':'Smith'},
 {'first': 'Henry', 'last':'Ford'},
 {'first': 'Henry', 'last':'Winkler'}]

如何在javascript中执行此操作?

我会为此使用Map

var m = new Map();
arr.forEach(function(obj){
    var name = obj.first + ' ' + obj.last;
    if(!m.has(name)){
       m.set(name, { first : obj.first, last : obj.last});
    }
});
var uniques = Array.from(m.values());

这将是推出新 ES6 套装的好时机

var s = new Set();
arr.forEach(a => s.add({'first':a.first, 'last': a.last}))
var myArr = Array.from(s);

@Minusfour 你就在我前面。我得到了同样的解决方案。

array.forEach( function (arrayItem)
{
   if(hashMap[arrayItem.first + arrayItem.last] == 0){
     hashMap[arrayItem.first + arrayItem.last] = 1;
     finalArray.push(arrayItem);
   }
});