【发布时间】:2014-11-08 10:05:17
【问题描述】:
我有一个这样的 JavaScript 数组:
[{
name:'a'
level:1
},{
name:'b'
level:2
},{
name:'c'
level:3
},{
name:'d'
level:2
},{
name:'e'
level:1
},{
name:'f'
level:2
},{
name:'g'
level:2
},{
name: 'f',
level: 1
}
]
我需要将其转换为基于对象的level 属性的树结构
[{
name: 'a'
level: 1
children: [{
name: 'b'
level: 2,
children: [{
name: 'c',
level: 3
}]
}, {
name: 'd'
level: 2
}]
}, {
name: 'e'
level: 1,
children: [{
name: 'f'
level: 2
}, {
name: 'g'
level: 2
}]
}, {
name: 'f',
level: 1
}]
我尝试过编写许多函数并尝试了许多方法,但都失败了。我意识到的一件事是,这只能通过编写递归函数来实现。请帮忙。
注意:关卡深度不限3,未知
【问题讨论】:
-
到目前为止你尝试过什么?在 SO 上,人们希望你至少花 5 分钟来解决你的问题,如果你真的在某个时候卡住了,那就问一个问题。没有你展示你的努力并要求人们为你编写代码是不好的,你永远不会自己学习任何东西。
-
我试过写很多函数,尝试了很多方法,但都失败了。我意识到的一件事是,这只能通过编写递归函数来实现。请帮忙。
-
那么我建议您发布您最好的努力之一,或者至少是最后的努力。否则,您的帖子将在您意识到之前被关闭并投反对票。
-
好的,保存通常的“发表你的努力”评论。你怎么“a”是“d”的父母。我应该假设最近的前一个是父母吗?如果你之前有 2 级,然后有 4 级,但没有 3 级,会发生什么?
-
@Raghavendra 你如何决定
f和g应该是e还是a的孩子?正如定义的那样,这个问题对我来说听起来模棱两可......
标签: javascript data-structures recursive-datastructures