I have the following JSON data.
categories = [
{catValue:1, catName: 'Arts, crafts, and collectibles'},
{catValue:2, catName: 'Baby'},
{catValue:3, catName: 'Beauty and fragrances'},
{catValue:4, catName: 'Books and magazines'},
{catValue:5, catName: 'Business to business'},
{catValue:6, catName: 'Clothing, accessories, and shoes'},
{catValue:7, catName: 'Antiques'},
{catValue:8, catName: 'Art and craft supplies'},
{catValue:9, catName: 'Art dealers and galleries'},
{catValue:10, catName: 'Camera and photographic supplies'},
{catValue:11, catName: 'Digital art'},
{catValue:12, catName: 'Memorabilia'}
];
var categoriesJson = JSON.stringify(categories);
And following array.
var mainCat = ['Arts, crafts, and collectibles', 'Baby' , 'Antiques']
While iterating through the JSON data, I need to check if the object value is included in an array. If it exists, do one thing; otherwise, do another.
For example
$.each(categoriesJson , function (key, value) {
if(value.catName is in array) {
//do something here
} else {
//do something here
}
});
How can I achieve this?
I have the following JSON data.
categories = [
{catValue:1, catName: 'Arts, crafts, and collectibles'},
{catValue:2, catName: 'Baby'},
{catValue:3, catName: 'Beauty and fragrances'},
{catValue:4, catName: 'Books and magazines'},
{catValue:5, catName: 'Business to business'},
{catValue:6, catName: 'Clothing, accessories, and shoes'},
{catValue:7, catName: 'Antiques'},
{catValue:8, catName: 'Art and craft supplies'},
{catValue:9, catName: 'Art dealers and galleries'},
{catValue:10, catName: 'Camera and photographic supplies'},
{catValue:11, catName: 'Digital art'},
{catValue:12, catName: 'Memorabilia'}
];
var categoriesJson = JSON.stringify(categories);
And following array.
var mainCat = ['Arts, crafts, and collectibles', 'Baby' , 'Antiques']
While iterating through the JSON data, I need to check if the object value is included in an array. If it exists, do one thing; otherwise, do another.
For example
$.each(categoriesJson , function (key, value) {
if(value.catName is in array) {
//do something here
} else {
//do something here
}
});
How can I achieve this?
Share Improve this question edited May 16, 2024 at 13:23 Kiran Shahi asked Nov 12, 2017 at 8:49 Kiran ShahiKiran Shahi 7,9809 gold badges40 silver badges76 bronze badges 3 |3 Answers
Reset to default 6Try the following:
var categories = [
{catValue:1, catName: 'Arts, crafts, and collectibles'},
{catValue:2, catName: 'Baby'},
{catValue:3, catName: 'Beauty and fragrances'},
{catValue:4, catName: 'Books and magazines'},
{catValue:5, catName: 'Business to business'},
{catValue:6, catName: 'Clothing, accessories, and shoes'},
{catValue:7, catName: 'Antiques'},
{catValue:8, catName: 'Art and craft supplies'},
{catValue:9, catName: 'Art dealers and galleries'},
{catValue:10, catName: 'Camera and photographic supplies'},
{catValue:11, catName: 'Digital art'},
{catValue:12, catName: 'Memorabilia'}
];
var categoriesJson = JSON.stringify(categories);
var mainCat = ['Arts, crafts, and collectibles', 'Baby' , 'Antiques']
$.each(JSON.parse(categoriesJson) , function (key, value) {
if(mainCat.indexOf(value.catName) > -1){
console.log('Exists: ' +value.catName)
}
else{
console.log('Does not exists: ' +value.catName)
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
I would filter the initial data array to get the array of matching categories:
var matchedCategories = categories.filter(i => mainCat.indexOf(i.catName) >= 0);
Then you could do what you need by iterating this sub-array.
I also use @dhilt approach but with includes
ex. If even one is included (return bool)
categories.filter(i =>
mainCat.includes(i.catName)
).length > 0
? true
: false;
array.indexOf(value.catName) !== -1
// is in array – JohanP Commented Nov 12, 2017 at 8:51