Javascript 在q.uniq()中使用两个迭代器

Javascript 在q.uniq()中使用两个迭代器,javascript,underscore.js,Javascript,Underscore.js,我知道给定一个对象数组,我可以通过检查每个对象的公共对象属性来过滤出唯一的对象。我想知道,我可以同时检查两个属性吗 例如: var foo = [ {"name":"Steve", "age":"56", "car":"Porsche"}, {"name":"Steve", "age":"56", "car":"Mercedes"}, {"name":"Bill", "age":"57", "car":"Porsche"}, {"name":"Linus",

我知道给定一个对象数组,我可以通过检查每个对象的公共对象属性来过滤出唯一的对象。我想知道,我可以同时检查两个属性吗

例如:

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);
我很希望能找回史蒂夫、比尔和莱纳斯。但是,.

这:

return obj.name && obj.age;
指:

if (!obj.name)
  return obj.name;
return obj.age;
只返回一个值。在您的情况下,由于所有名称都不是空的,因此将返回年龄

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

return obj.name + "---" + obj.age; // replace "---" with whatever
返回一个由姓名和年龄组成的字符串。

此:

return obj.name && obj.age;
指:

if (!obj.name)
  return obj.name;
return obj.age;
只返回一个值。在您的情况下,由于所有名称都不是空的,因此将返回年龄

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

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

返回一个字符串,该字符串是根据名称和年龄构建的。

迭代器函数是比较的基础。也许不是最好的答案,但是

return obj.name && obj.age;
试一试


迭代器函数是比较的基础。也许不是最好的答案,但是

return obj.name && obj.age;
试一试


我就是这么想的。有可能做到我想做的吗?这对我来说就像是黑魔法。似乎我在属性之间输入什么并不重要,只要它是一个字符串。似乎甚至
obj.name+obj.age
都能工作。
\uuq.uniq()
所做的就是确保每个值只返回一个。如果
\uuq.uniq
也允许您传入一个比较器函数,那么您可以使事情变得更加新奇。然而,下划线的API设置非常简洁,这就是我的想法。有可能做到我想做的吗?这对我来说就像是黑魔法。似乎我在属性之间输入什么并不重要,只要它是一个字符串。似乎甚至
obj.name+obj.age
都能工作。
\uuq.uniq()
所做的就是确保每个值只返回一个。如果
\uuq.uniq
也允许您传入一个比较器函数,那么您可以使事情变得更加新奇。然而,下划线的API设置非常简洁。