我有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" }];
答案 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。