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设置非常简洁。