javascript递归数组递归问题

现在有个需求,需要根据服务端请求的数据,组装成一个树节点,也就是parent-child节点,服务端请求后的数据结构如下图,topology是一个object,object下面的key是一个parent,value是child数组。

https://img3.mukewang.com/5c23471400012ce201040514.jpg

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"]}}}}

慕妹3242003
浏览 416回答 1
1回答

梦里花落0921

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)}));结果:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript