使用递归嵌套父子
nesting parent-child using recursion
我有 json 个这样的对象
[
{"id" : 1, "parentid" : null},
{"id" : 2, "parentid" : null},
{"id" : 3, "parentid" : 2},
{"id" : 4, "parentid" : 3}
]
我想在javascript
中像这样嵌套
[
{"id" : 1, "parentid" : null},
{"id" : 2, "parentid" : null, "childs":
[{"id" : 3, "parentid" : 2, "childs":
[{"id": 4, "parentid" : 3}]}]
}
]
我需要使用递归函数还是只需要一个简单的循环就可以了?实现它的最有效方法是什么?
你必须为此使用递归 function
。简单循环将不起作用,因为在 array
和最多 n
级别中可以有 n
数量的 objects
。这是一个你可以使用的函数
var a = [{
"id": 1,
"parentid": null
},
{
"id": 2,
"parentid": null
},
{
"id": 3,
"parentid": 2
},
{
"id": 4,
"parentid": 3
}
]
function getNestedChildren(arr, parent) {
var out = []
for(var i in arr) {
if(arr[i].parentid == parent) {
var children = getNestedChildren(arr, arr[i].id)
if(children.length) {
arr[i].children = children
}
out.push(arr[i])
}
}
return out
}
console.log(getNestedChildren(a))
Link: http://oskarhane.com/create-a-nested-array-recursively-in-javascript/
我有 json 个这样的对象
[
{"id" : 1, "parentid" : null},
{"id" : 2, "parentid" : null},
{"id" : 3, "parentid" : 2},
{"id" : 4, "parentid" : 3}
]
我想在javascript
中像这样嵌套[
{"id" : 1, "parentid" : null},
{"id" : 2, "parentid" : null, "childs":
[{"id" : 3, "parentid" : 2, "childs":
[{"id": 4, "parentid" : 3}]}]
}
]
我需要使用递归函数还是只需要一个简单的循环就可以了?实现它的最有效方法是什么?
你必须为此使用递归 function
。简单循环将不起作用,因为在 array
和最多 n
级别中可以有 n
数量的 objects
。这是一个你可以使用的函数
var a = [{
"id": 1,
"parentid": null
},
{
"id": 2,
"parentid": null
},
{
"id": 3,
"parentid": 2
},
{
"id": 4,
"parentid": 3
}
]
function getNestedChildren(arr, parent) {
var out = []
for(var i in arr) {
if(arr[i].parentid == parent) {
var children = getNestedChildren(arr, arr[i].id)
if(children.length) {
arr[i].children = children
}
out.push(arr[i])
}
}
return out
}
console.log(getNestedChildren(a))
Link: http://oskarhane.com/create-a-nested-array-recursively-in-javascript/