2014-01-16 99 views
28

我已經在這個網站上搜索了很多例子,但似乎無法使它們符合我的需求。使用jquery grep過濾json數組

我只需要使用grep過濾一些json結果,下面是json。

var data = { "items":[ 
    { 
     "id":   1, 
     "category":  "cat1" 
    }, 
    {   
     "id":   2, 
     "category":  "cat2" 
    }, 
    { 
     "id":   3, 
     "category":  "cat1" 
    } 
]} 

上面的例子...

  • 我怎麼會返回與CAT1的類別中的所有項目?
  • 我該如何返回cat1和id爲3的所有項目?

我知道這不是一個很好的例子,但任何幫助都會很棒!謝謝!

我曾嘗試以下

data.items = $.grep(data.items, function(element, index){ 
    return element.id == 1; 
    console.log(data.items); 
}); 
+1

你有沒有讀來documenation(http://api.jquery.com/jQuery.grep/)?你有嘗試過什麼嗎? –

+0

循環遍歷所有項目,將它們保存到一個新變量並返回該變量? –

+0

是的我已閱讀文檔,我已經嘗試了很多不同的示例組合,我將示例添加到了我的文章中。 – RiddleMeThis

回答

40
var data = { 
    "items": [{ 
     "id": 1, 
     "category": "cat1" 
    }, { 
     "id": 2, 
     "category": "cat2" 
    }, { 
     "id": 3, 
     "category": "cat1" 
    }] 
}; 

var returnedData = $.grep(data.items, function (element, index) { 
    return element.id == 1; 
}); 


alert(returnedData[0].id + " " + returnedData[0].category); 

變化的returnedData被返回對象的數組,所以可以通過數組索引訪問它。

http://jsfiddle.net/wyfr8/913/

+0

我更新了你的jsFiddle以符合你的答案。 http://jsfiddle.net/wyfr8/26/ – cjbarth

+0

我有錯誤的地方console.log所以我沒有看到它。 – RiddleMeThis

+0

我更新了類別過濾。 http://jsfiddle.net/wyfr8/584/ –