7

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?

asked Nov 12, 2017 at 8:49
3

3 Answers 3

6

Try 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>

answered Nov 12, 2017 at 9:17
Sign up to request clarification or add additional context in comments.

Comments

3

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.

answered Nov 12, 2017 at 8:54

Comments

0

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;
answered Jul 17, 2019 at 8:49

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.