【发布时间】:2018-05-24 13:49:53
【问题描述】:
下面是我的数组
[
{id: 1, title: 'hello', parent: {number:0}},
{id: 2, title: 'hello', parent: {number:0}},
{id: 3, title: 'hello', parent: {number:1}},
{id: 4, title: 'hello', parent: {number:3}},
{id: 5, title: 'hello', parent: {number:4}},
{id: 6, title: 'hello', parent: {number:4}},
{id: 7, title: 'hello', parent: {number:3}},
{id: 8, title: 'hello', parent: {number:2}}
]
我希望像这样嵌套的对象作为输出:
[
{id: 1, title: 'hello', parent: 0, children: [
{id: 3, title: 'hello', parent: 1, children: [
{id: 4, title: 'hello', parent: 3, children: [
{id: 5, title: 'hello', parent: 4},
{id: 6, title: 'hello', parent: 4}
]},
{id: 7, title: 'hello', parent: 3}
]}
]},
{id: 2, title: 'hello', parent: 0, children: [
{id: 8, title: 'hello', parent: 2}
]}
]
请帮助我使用递归函数在 node.js 中执行此操作。
以下是我尝试过的递归函数:
function getNestedChildren(arr, parent) {
var out = []
for(var i in arr) {
if(arr[i].parent.number == parent.number) {
var children = getNestedChildren(arr, arr[i].id)
if(children.length) {
arr[i].children = children
}
out.push(arr[i])
}
}
return out
}
请帮我解决这个问题。我是这方面的新手。
【问题讨论】:
-
你试过什么?我们并不是真正的编码服务。你真的应该自己做一些尝试,然后问我们你在哪里卡住了。
-
这是我尝试过但无法上传的。function getNestedChildren(arr, parent) { var out = [] for(var i in arr) { if(arr[i].parent. number == parent.number) { var children = getNestedChildren(arr, arr[i].id) if(children.length) { arr[i].children = children } out.push(arr[i]) } } return出}
-
欢迎堆栈溢出。请将您尝试过的代码放入您的问题中,正确格式化,然后解释您得到的结果或卡住的地方,更具体地说,您希望在该代码中获得什么帮助。多行代码在 cmets 中不清晰。您可以使用“编辑”按钮来编辑您的问题,以添加您尝试过的代码和附加说明。
-
我现在可以上传我的代码了。
标签: javascript arrays node.js recursion