为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 415 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号