使用下划线从对象列表中过滤匹配值
问题描述:
我在我的项目中使用了UnderscoreJs
。我必须过滤包含具有属性的对象的数组。我需要根据这些值进行过滤。该值可以是对象的任何属性。例如:“迷你”应取两者“丰田”和“本田”,因为“小”,是存在两个对象使用下划线从对象列表中过滤匹配值
[{ name:"Toyota minivan", id:"506", size: "large" }, { name:"Honda Civic", id:"619", size: "mini" }]
如何使用下划线做的一部分。我尝试了以下方法,但无法正常工作。
var searchStr="mini";
var evens = _.filter([arrayData], function(obj){ return _.contains(obj, searchStr); });
请问我能告诉我哪里出错了吗?
答
哦,我用简单的if条件,这样在将来如果要列出MINI在一个阵列和大型在一个阵列中,所以你可以很容易地做到做到了这一点。如果匹配,我检查了对象属性,然后分配给新列表。这是我的代码。并在这里查看演示fiddle
var list=[{ name:"Toyota minivan", id:"506", size: "large" },
{ name:"Honda Civic", id:"619", size: "mini" },
{name:"zen",id:"606",size:"mini"}];
var result=_.filter(list, function(obj){
if(obj.size=='mini'){
var matchedcars=obj;
console.log("result"+JSON.stringify(matchedcars));
}
return matchedcars;
});
alert("result"+JSON.stringify(result));
此解决方案部分工作,因为'obj.size =='mini''是硬编码的。检查应该通过验证对象的所有属性来完成,而不是特定于'size'属性。 – zilcuanu 2014-09-03 13:39:56
你的意思是部分?并且只有在将来您添加新属性时,您接受的内容才能用于索引目的?索引更改,我在我的项目中使用了这种类型的比较,它工作正常。无论如何兄弟你得到答案这就是进出口。再见 – Sudarshan 2014-09-03 13:49:08