我想得到所有值,其中category.id = 1所以我应该得到2个结果
我的JSON看起来像这样:
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看起来像这样:
var x = _.filter(test,
function (innerObject) {
return _.filter(innerObject,
function (category) {
return category.id === 1;
});
});
console.log(x);
I made a JS Fiddle但我每次都会得到所有3个元素......不仅仅是2个正确的元素!
我也试过像
这样的东西var x = _.where(test, {"category":{"id":2}});
console.log(x);
对我来说似乎是合乎逻辑的,但数组总是空的
我希望有人可以告诉我我做错了什么...... 谢谢!
答案 0 :(得分:4)
这应该有效:
var x = test.filter(function (a) {return a.category.id === 1 })
答案 1 :(得分:2)
那是因为你在哪里搜索一个完全像{"category":{"id":1}}
的元素而你的对象是{"category":{"id":1,"name":"category1"}}
尝试
_.filter(test, function(a){ return a.category && a.category.id === 1; });