Underscore.js - 在嵌套的Json中过滤 [英] Underscore.js - filtering in a nested Json
问题描述
我想得到所有值,其中category.id = 1所以我应该得到2个结果
I want to get all values, where the category.id = 1 so i should get 2 results
我的JSON看起来像这样:
My JSON looks like this:
var test = [
{
"id": 1,
"name": "name1",
"value": "value1",
"category": {
"id": 1,
"name": "category1"
}
},
{
"id": 2,
"name": "name2",
"value": "value2",
"category": {
"id": 1,
"name": "category1"
}
},
{
"id": 3,
"name": "name3",
"value": "value3",
"category": {
"id": 2,
"name": "category2"
}
}
];
我的JavaScript看起来像这样:
my JavaScript looks like this:
var x = _.filter(test,
function (innerObject) {
return _.filter(innerObject,
function (category) {
return category.id === 1;
});
});
console.log(x);
我做了一个JS小提琴但我每次都得到所有3个元素...不仅仅是2个正确的元素!
I made a JS Fiddle but i get everytime all 3 elements back... not only the 2 correct ones!
我也尝试过像
var x = _.where(test, {"category":{"id":2}});
console.log(x);
对我来说似乎合乎逻辑,但数组总是空的
what seems to be logical for me, but the array is always empty
我希望有人可以告诉我我做错了什么...
谢谢!
I hope somebody can tell me what i made wrong...
Thank You!
推荐答案
那是因为你在哪里搜索一个完全像 {category:{id:1}}
的元素,你的对象是 {category:{id:1,name:category1}}
That's because with where you're searching for an element that is EXACTLY like {"category":{"id":1}}
and your object is {"category":{"id":1,"name":"category1"}}
尝试
_.filter(test, function(a){ return a.category && a.category.id === 1; });
这篇关于Underscore.js - 在嵌套的Json中过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!