web-dev-qa-db-ja.com

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);
});
37
RiddleMeThis
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);

ReturnDataはオブジェクトの配列を返しているため、配列インデックスでアクセスできます。

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

51
marko
var data = {
  "items": [{
    "id": 1,
    "category": "cat1"
  }, {
    "id": 2,
    "category": "cat2"
  }, {
    "id": 3,
    "category": "cat1"
  }, {
    "id": 4,
    "category": "cat2"
  }, {
    "id": 5,
    "category": "cat1"
  }]
};
//Filters an array of numbers to include only numbers bigger then zero.
//Exact Data you want...
var returnedData = $.grep(data.items, function(element) {
  return element.category === "cat1" && element.id === 3;
}, false);
console.log(returnedData);
$('#id').text('Id is:-' + returnedData[0].id)
$('#category').text('Category is:-' + returnedData[0].category)
//Filter an array of numbers to include numbers that are not bigger than zero.
//Exact Data you don't want...
var returnedOppositeData = $.grep(data.items, function(element) {
  return element.category === "cat1";
}, true);
console.log(returnedOppositeData);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id='id'></p>
<p id='category'></p>

$.grep()メソッドは、必要に応じて配列からアイテムを削除し、残りのアイテムのみが特定の検索を実行できるようにします。テストは、配列アイテムと配列内のアイテムのインデックスを渡す関数です。テストがtrueを返した場合のみ、アイテムは結果配列になります。

0
Parth Raval