我有像这样的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}]}]
}
]
我需要使用递归函数还是只需要一个简单的循环就可以了?实现它的最有效方法是什么?
答案 0 :(得分:3)
您必须使用递归function
。简单循环不起作用,因为在n
和最高objects
级别中array
个n
个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))
。这是一个可以使用的功能
checked

链接:http://oskarhane.com/create-a-nested-array-recursively-in-javascript/