How do I query multiple columns/properties from a json object? I am trying this to query single column "category". How can Query with both Category and Id?
var data = {
"items": [{
"id": 1,
"category": ["cat1","cat2"]
}, {
"id": 2,
"category": ["cat1","cat3"]
}, {
"id": 3,
"category": ["cat11","cat2"]
}]
};
var returnedData = $.grep(data.items, function (element) {
return element.category.indexOf('cat1') >= 0;
});
console.log(returnedData);
How do I query multiple columns/properties from a json object? I am trying this to query single column "category". How can Query with both Category and Id?
var data = {
"items": [{
"id": 1,
"category": ["cat1","cat2"]
}, {
"id": 2,
"category": ["cat1","cat3"]
}, {
"id": 3,
"category": ["cat11","cat2"]
}]
};
var returnedData = $.grep(data.items, function (element) {
return element.category.indexOf('cat1') >= 0;
});
console.log(returnedData);
Share
Improve this question
asked Jul 5, 2018 at 21:25
KurkulaKurkula
6,78228 gold badges138 silver badges215 bronze badges
2
-
So are you saying that you want to return any objects that have the 'category' of
cat1
? Sorry it's just that I'm a little confused what you want to return – connoraworden Commented Jul 5, 2018 at 21:30 - I am trying to return with a and condition something similar to where cat = 'cat 11' and id= 1 – Kurkula Commented Jul 5, 2018 at 21:36
3 Answers
Reset to default 3Instead of using the slower grep
, use plain js filter
var data = {
"items": [{
"id": 1,
"category": ["cat1","cat2"]
}, {
"id": 2,
"category": ["cat1","cat3"]
}, {
"id": 3,
"category": ["cat11","cat2"]
}]
};
const res = data.items.filter(e => e.category.indexOf('cat1') >= 0 && e.id === 1);
console.log(res);
Not sure exactly what you are asking but -
return element.category.indexOf('cat1') >= 0 && element.id == 2;
**return element.category.includes('cat1') && element.id!=1;**
This way you can achieve this
var data = {
"items": [{
"id": 1,
"category": ["cat1","cat2"]
}, {
"id": 2,
"category": ["cat1","cat3"]
}, {
"id": 3,
"category": ["cat11","cat2"]
}]
};
var returnedData = $.grep(data.items, function (element) {
return element.category.includes('cat1') && element.id!=1;
});
console.log(returnedData);
Live Demo