前提・実現したいこと
下記のようなJSONを取得して、表示を分ける処理をしています。
該当のソースコード
json
1 2var data =[ 3 { 4 "sname": "機能1", 5 "category": "カテゴリー1", 6 "label": [ 7 { "lname": "Aプラン"}, 8 { "lname": "Bプラン" }, 9 { "lname": "Cプラン"} 10 ] 11 }, 12 { 13 "sname": "機能2", 14 "category": "カテゴリー2", 15 "label": [ 16 { "lname": "Bプラン" }, 17 { "lname": "Cプラン"} 18 ] 19 }, 20 { 21 "sname": "機能3", 22 "category": "カテゴリー1", 23 "label": [ 24 { "lname": "Aプラン"}, 25 { "lname": "Bプラン" }, 26 { "lname": "Dプラン"} 27 ] 28 } 29]
試したこと
下記のようにfilterを使用してみましたが、うまくいきませんでした。
方法2でうまくいったと思ったのですが、同時に他の要素でフィルタリングしようと思った時に2つ目の要素以降がうまくいきません。
javascript
1 2 var p_data = JSON.parse(JSON.stringify(data)); 3 4 //Aプランのデータ抽出お試し 1 5 var aList = p_data.filter(function(item, index){ 6 if (item.label.lname == "Aプラン" ) return true; 7 }); 8 console.log(aList); 9//結果 NG 10//length: 0 11 12 //Aプランのデータ抽出お試し 2 13 var aList = p_data.filter(function(item, index){ 14 if (item.label[0].lname == "Aプラン" ) return true; 15 }); 16 console.log(aList); 17//結果 OK 18//0: 19//category: "カテゴリー1" 20//label: (3) [{…}, {…}, {…}] 21//sname: "機能1" 22//1: 23//category: "カテゴリー1" 24//label: (3) [{…}, {…}, {…}] 25//sname: "機能3" 26 27 //同様にBプランの抽出データも作りたい 28 var bList = p_data.filter(function(item, index){ 29 if (item.label[0].lname == "Bプラン" ) return true; 30 }); 31 console.log(bList); 32//結果 NG 1つしか値が返されない 33//0: 34//category: "カテゴリー2" 35//label: (2) [{…}, {…}] 36//sname: "機能2" 37 38
やりたいこと
最終的にはAプランを値に含む配列、Bプランを値に含む配列、Cプランを値に含む配列をそれぞれ作成し、
Click操作で表示を出し分ける処理を行いたいと思っています。
良いやり方があれば教えていただければ幸いです。
宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー