我知道给定对象数组,可以通过检查每个对象共有的对象属性来使用_.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

最佳答案

这个:

return obj.name && obj.age;


手段:

if (!obj.name)
  return obj.name;
return obj.age;


仅返回一个值。在您的情况下,由于所有名称都不为空,因此将返回年龄。

如果要根据姓名和年龄的组合找到唯一的商品,可以执行以下操作:

return obj.name + "---" + obj.age; // replace "---" with whatever


这将返回一个根据名称和年龄构建的字符串。

关于javascript - 在_.uniq()中使用两个迭代器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17870034/

10-12 16:20