我理解,给定一个对象数组,我可以使用_.uniq()
通过检查每个对象共有的对象属性来过滤掉唯一对象。我想知道,我可以一次检查两个属性吗?
例如:
var foo = [
{"name":"Steve", "age":"56", "car":"Porsche"},
{"name":"Steve", "age":"56", "car":"Mercedes"},
{"name":"Bill", "age":"57", "car":"Porsche"},
{"name":"Linus", "age":"56", "car":"Mercedes"}
];
var bar = _.unique(foo, false, function(obj, k, v){
return obj.name && obj.age;
});
console.log(bar);
我非常希望我能找回史蒂夫,比尔和莱纳斯。但是,it looks as though only obj.age
is being checked against。
答案 0 :(得分:6)
此:
return obj.name && obj.age;
表示:
if (!obj.name)
return obj.name;
return obj.age;
只返回一个值。在您的情况下,由于所有名称都是非空的,因此将返回年龄。
如果您想根据姓名和年龄的组合查找唯一的项目,可以这样做:
return obj.name + "---" + obj.age; // replace "---" with whatever
返回一个根据名称和年龄构建的字符串。
答案 1 :(得分:2)
迭代器函数是一个比较基础。也许不是那里最好的答案,而不是
return obj.name && obj.age;
尝试
return obj.name + '|' + obj.age;