Reputation: 1036
Response from get request :
[
{
id: 234,
resturant_name : "dish",
cusions : {1:"italian", 2 : "indian", 3: "foo"},
address : NYI
},
{
id: 235,
resturant_name : "kebab",
cusions : {1:"china", 2 : "indian", 3: "american"},
address : NYI
},
{
id: 236,
resturant_name : "itrup",
cusions : {1:"italian", 2: "american"},
address : NYI
}
]
I want to filter array which has a cusions type 'american', from the the above object I am expecting response
{
id: 235,
resturant_name : "kebab",
cusions : {1:"china", 2 : "indian", 3: "american"},
address : NYI
},
{
id: 236,
resturant_name : "itrup",
cusions : {1:"italian", 2: "american"},
address : NYI
}
after filtration ^^^
Upvotes: 3
Views: 773
Reputation: 386848
You could use Array#filter
in combination with Object.keys
and Array#some
for checking the wanted cuisine
.
var data = [{ id: 234, restaurant: "dish", cuisines: { 1: "italian", 2: "indian", 3: "foo" }, address: "NYI" }, { id: 235, restaurant: "kebab", cuisines: { 1: "china", 2: "indian", 3: "american" }, address: "NYI" }, { id: 236, restaurant: "itrup", cuisines: { 1: "italian", 2: "american" }, address: "NYI" }],
cuisine = 'american',
result = data.filter(function (a) {
return Object.keys(a.cuisines).some(function (k) {
return a.cuisines[k] === cuisine;
});
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
ES6
var data = [{ id: 234, restaurant: "dish", cuisines: { 1: "italian", 2: "indian", 3: "foo" }, address: "NYI" }, { id: 235, restaurant: "kebab", cuisines: { 1: "china", 2: "indian", 3: "american" }, address: "NYI" }, { id: 236, restaurant: "itrup", cuisines: { 1: "italian", 2: "american" }, address: "NYI" }],
cuisine = 'american',
result = data.filter(a => Object.values(a.cuisines).includes(cuisine));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Upvotes: 1
Reputation: 2672
One of the ways to do:
var arr = [
{
id: 234,
resturant_name : "dish",
cusions : {1:"italian", 2 : "indian", 3: "foo"},
address : 'NYI'
},
{
id: 235,
resturant_name : "kebab",
cusions : {1:"china", 2 : "indian", 3: "american"},
address : 'NYI'
},
{
id: 236,
resturant_name : "itrup",
cusions : {1:"italian", 2: "american"},
address : 'NYI'
}
];
var res = arr.filter(x=> {
return JSON.stringify(x.cusions).indexOf('american') >=0;
});
console.log(res);
Upvotes: 1