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 index0...n - 数组中的位置)或 -1 如果值不存在于数组中。您需要更改条件以检查 > -1. 上的 index 在您的变体中,您总是检查 index == 1,但是 cat1 具有 index 0 - 这就是为什么您得到空结果的原因。

var returnedData = $.grep(data.items, function (element) {    
  return element.category.indexOf('cat1') >= 0;
});

Example