亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript遞歸數組遞歸問題

javascript遞歸數組遞歸問題

慕妹3242003 2018-11-14 13:14:49
現在有個需求,需要根據服務端請求的數據,組裝成一個樹節點,也就是parent-child節點,服務端請求后的數據結構如下圖,topology是一個object,object下面的key是一個parent,value是child數組。var topology = {1:['2'],2:['29','39','38','37'],24:['27'],29:['24'],37:['42'],38:['43'],39:['47'],42:['46'],43:['45']}比如上圖中的1有一個child是一個數組["2"],這個value為2的child又有4個child,也就是["29","39","38","37"]最終需要生成如下數據結構,即key是parent的string,child因為有多個,所以是一個數組const data = {"1":{"2":{"29":{"24":{"27":["26"]}},"39":["47"],"38":{"43":["45"]},"37":{"42":["46"]}}}}
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

var topology = [ ... ];


function rebuildTopo(index) {

    var topo = topology[index];

    var check = false;

    

    if(!topo) {

        return null;

    } else if(topo instanceof Array) {

        var obj = {};

        

        for(var j in topo) {

            var t = topo[j];

            obj[t] = rebuildTopo(t);

            

            if(!!obj[t])

                check = true;

        }

        

        if(check)

            return obj;

        else

            return Object.keys(obj);

    }

}


console.log(JSON.stringify({1: rebuildTopo(1)}));

結果:

https://img1.sycdn.imooc.com//5c23473d00018a1d05360019.jpg

查看完整回答
反對 回復 2018-12-26
  • 1 回答
  • 0 關注
  • 430 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號