このサイトで多くの例を検索しましたが、私のニーズに合うようには思えません。 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);
});
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はオブジェクトの配列を返しているため、配列インデックスでアクセスできます。
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を返した場合のみ、アイテムは結果配列になります。