前提
javascriptで複雑な配列を多重ループで処理するコードを書いているのですが、
多重ループの処理で躓いており想定している結果とならないのでお知恵をお貸しいただけないでしょうか。
実現したいこと
リスト(aaa)の配列から多階層(bbb)となっている配列と一致しているidを取得し、
一致している配列のstrをリストの配列(aaa)へ書き込むコードを作成予定です。
試したこと
//idをidNameへ変更 var aaa = [{name : "aa",idName1: 'aa01' }, {name : "bb",idName1: 'aa17'}, {name : "cc",idName1: 'aa08a'}, {name : "dd",idName1: 'aa01' }, {name : "ee",idName1: 'aa02' }, {name : "ff",idName1: 'aa05' }, {name : "gg",idName1: 'aa09' }]; //idをidNameへ変更,strをNumへ変更,code追加 var bbb = {hoge01 : { hoge02 : { hoge3 : { hoge4 : [ {hoge5 : [ {hoge6: [{hoge7: [{idName: 'aa01' ,code:0,Num : 1}]}]}, {hoge6: [{hoge7: [{idName: 'aa02' ,code:0,Num : 2}]}, {hoge7: [{idName: 'aa03' ,code:0,Num : 3}]}]}],}, {hoge5 : [ {hoge6 : [{hoge7: [{idName: 'aa04' ,code:0,Num : 4}]}, {hoge7: [{idName: 'aa05' ,code:0,Num : 5}]}, {hoge7: [{idName: 'aa06' ,code:0,Num : 6}]}, {hoge7: [{idName: 'aa07' ,code:0,Num : 7}]}, {hoge7: [{idName: 'aa08' ,code:0,Num : 8}]}, {hoge7: [{idName: 'aa09' ,code:0,Num : 9}]}, {hoge7: [{idName: 'aa10' ,code:0,Num : 10}]}]}]}, {hoge5 : [ {hoge6 : [{hoge7: [{idName: 'aa11' ,code:0,Num : 11}]}, {hoge7: [{idName: 'aa012' ,code:0,Num : 12}]}]}]}]}}}}; //mapで試しconsole.logで確認したが思った結果とならなかった。 bbb.hoge01.hoge02.hoge3.hoge4.map(hoge4 => hoge4.hoge5.map(hoge5 => hoge5.hoge6.map(hoge6 => hoge6.hoge7.map(hoge7 => console.log(aaa.map(aaa =>aaa.idName1).indexOf(hoge7.idName)) ) ) ) ); //欲しい結果 var aaa = [{name : "aa",idName1: 'aa01',Num : 1}, {name : "bb",idName1: 'aa17',Num :''},//一致しない場合はなし {name : "cc",idName1: 'aa08a',Num : 8}, {name : "dd",idName1: 'aa01',Num : 1}, {name : "ee",idName1: 'aa02',Num : 2}, {name : "ff",idName1: 'aa05',Num : 5}, {name : "gg",idName1: 'aa09',Num : 9}];
map関数で深層のhoge7を一つ一つ拾い上げることはできたのでhoge7.map上に
aaaのmap関数を記載しIndexOfで検索をすることができると考えていたのですが、
どうしても、bbbが基準となってしまいます。
aaa.mapとbbb.mapを個々で書きindexOfで比較できればなと調べたのですが、それも分からずじまいでした。
このような、複雑な配列はmap等を使わずにhoge7内を一つ一つ拾い上げることは可能なのでしょうか。
ご教示頂けると幸いです。
回答2件
あなたの回答
tips
プレビュー