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

时间:2016-01-21 18:28:09

标签: javascript

我有一个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中执行此操作?

3 个答案:

答案 0 :(得分:2)

我会使用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());

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

i