Underscore.js获取一系列唯一对象

时间:2015-07-13 20:36:24

标签: javascript arrays underscore.js

我有2个对象数组。阵列之间有重复。我想将它们合并为所有唯一对象的1个数组(所以没有重复)。

我如何通过比较" id"每个对象?

Underscore.js有一个名为_.uniq()的方法。它看起来是正确的,但我无法获得" iterator"的语法。论证是正确的。

var firstArray = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }];
var secondArray = [{ id: 2, name: "boop" }, { id: 3, name: "baz" }];

firstArray.push(secondArray);
var myUniqueArray = _.uniq(firstArray, false, ???);

myUniqueArray // [{ id: 1, name: "foo"}, { id: 2, name: "bar" }, { id: 3, name: "baz" }];

2 个答案:

答案 0 :(得分:2)

您应该能够使用_.uniq方法实现此目的,该方法与属性名称的第二个参数一起用于过滤项目:

var myView = new MyView(); 
var region = new Marionette.Region({el: "#container"}); 
region.show(myView); 
var firstArray = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }];
var secondArray = [{ id: 2, name: "boop" }, { id: 3, name: "baz" }];

var result = _.uniq(firstArray.concat(secondArray), 'id');

alert(JSON.stringify(result, null, 4));

答案 1 :(得分:1)

以下应该这样做:

var myUniqueArray = _.uniq(firstArray.concat(secondArray), false, function (obj) {
    return obj.id;
});

此处的iteratee将生成一个检查唯一性的值,在本例中为id属性值。

这是JSFiddle