javascript递归数组递归问题
现在有个需求,需要根据服务端请求的数据,组装成一个树节点,也就是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"]}}}}
再次先谢过了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
结果:
Update
针对你所说的结构,又写了一段:
不得不说,新的数据结构反而更容易理解,也更加容易写。当然,其实
!topo
判断和topo instanceof Array
判断可以合并,写作后者略有区别,当子元素不存在时候也会有
children: []
,而前者由于分开判断了!topo
,所以子元素不存在就不会有children
项。你要生成的数据应该是这种形式吧:
@cool_zjy 多谢。
是的,需要你这种数据结构,问题描述里没有写清楚,抱歉。
现在这个递归后的数据,需要塞入到antd的treenode里面,也就是每个parent需要由child组成Treenode,比如这样(举个例子,children节点没有全部写出来)。
这个是官方文档,以下代码是我的实现(参考了官方文档里的异步数据加载部分的代码),不过报错了。
https://ant.design/components...
报错提示: