###実現したいこと
以下のvar search_menus = {}
というオブジェクトは、ユーザーがラジオボタンで選択する内容でローカルストレージに入っている値です。
ラジオボタンなので一つだけtrue
の部分が入る予定です。
それを{ color: "red" }
と取得したいです。
###該当のソースコード
jQuery
1var search_menus = { 2 "search_page": "comments", 3 "search_filter": { 4 "posts": { 5 "taxi": { 6 "aaa": false 7 } 8 }, 9 "comments": { 10 "color": { 11 "red": true // ユーザーが red のラジオボタンを選択している状態 12 } 13 }, 14 "users": { 15 "airplane": { 16 "aaa": false, 17 "rrr": false, 18 "vvv": false 19 }, 20 "train": { 21 "rrr": false, 22 "ttt": false 23 }, 24 }, 25 } 26};
###試したこと
大変醜くて恐縮なのですが、自分のスキルでは次のようなeach
の連続になってしまいます。
もっと良い書き方がございましたら知りたいと考えているのですが、みなさんならどう書きますでしょうか?
jQuery
1var result = getSelectedFilter(search_menus); 2console.log(result); // { color: "red" } が取得できるが、eachの連続がやや醜く感じます 3 4function getSelectedFilter(search_menus){ 5 let result = {}; 6 const search_filter = search_menus.search_filter; 7 $.each(search_filter, function(search_page,obj1){ 8 $.each(obj1, function(content_name,obj2){ 9 $.each(obj2, function(kind,state){ 10 if(state === true){ 11 result[content_name] = kind; 12 } 13 }); 14 }); 15 }); 16 return result; 17}
回答2件
あなたの回答
tips
プレビュー