2017-11-12 21 views
1

私は以下のJSONデータを持っています。JSONオブジェクト配列に定義された値が含まれているかどうかをチェックする方法

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'] 

JSONデータをループする際に、Object値が配列にリストされているかどうかを確認する必要があります。はいの場合は別のことをします。例えば

$.each(categoriesJson , function (key, value) { 
    if(value.catName is in array) { 
     //do something here 
    } else { 
     //do something here 
    } 
}); 

どのように私はこれを達成することができますか?

+1

'array.indexOf(value.catName)== -1' //は、配列の – JohanP

+0

可能な重複している[かどうかを確認する方法文字列配列にJavaScriptの文字列が1つ含まれていますか?](https://stackoverflow.com/questions/12623272/how-to-check-if-a-string-array-contains-one-string-in-javascript) – Nisarg

+0

参照: https://stackoverflow.com/q/237104/5894241 – Nisarg

答えて

2

次のことを試してみてください!

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>

1

私は、一致するカテゴリの配列を取得するには、最初のデータ配列をfilterます:

var matchedCategories = categories.filter(i => mainCat.indexOf(i.catName) >= 0); 

次に、このサブ配列を繰り返すことによって、あなたが必要なものを行うことができます。

関連する問題