Jquery json 上的 where 子句
Jquery where clause on json
假设我有一个示例 json 数据,例如:
var data = {
"items": [{
"id": 1,
"category": ["cat1","cat2"]
}, {
"id": 2,
"category": ["cat1","cat3"]
}, {
"id": 3,
"category": ["cat11","cat2"]
}]
};
现在如何 return 仅包含 cat1
的数据
我试过 jquery grep like
var returnedData = $.grep(data.items, function (element, index) {
return element.category.indexOf("cat1") == 1;
});
但它没有给我正确的输出,应该 return 第一和第二个对象。
谢谢。
使用Array.filter
var filteredData = data.items.filter(function(item) {
return item.category.indexOf("cat1") > -1;
});
indexOf returns index
(0...n
- 数组中的位置)或 -1
如果值不存在于数组中。您需要更改条件以检查 > -1.
上的 index
在您的变体中,您总是检查 index == 1
,但是 cat1
具有 index
0 - 这就是为什么您得到空结果的原因。
var returnedData = $.grep(data.items, function (element) {
return element.category.indexOf('cat1') >= 0;
});
假设我有一个示例 json 数据,例如:
var data = {
"items": [{
"id": 1,
"category": ["cat1","cat2"]
}, {
"id": 2,
"category": ["cat1","cat3"]
}, {
"id": 3,
"category": ["cat11","cat2"]
}]
};
现在如何 return 仅包含 cat1
的数据我试过 jquery grep like
var returnedData = $.grep(data.items, function (element, index) {
return element.category.indexOf("cat1") == 1;
});
但它没有给我正确的输出,应该 return 第一和第二个对象。
谢谢。
使用Array.filter
var filteredData = data.items.filter(function(item) {
return item.category.indexOf("cat1") > -1;
});
indexOf returns index
(0...n
- 数组中的位置)或 -1
如果值不存在于数组中。您需要更改条件以检查 > -1.
上的 index
在您的变体中,您总是检查 index == 1
,但是 cat1
具有 index
0 - 这就是为什么您得到空结果的原因。
var returnedData = $.grep(data.items, function (element) {
return element.category.indexOf('cat1') >= 0;
});