使用递归嵌套父子

时间:2017-12-14 08:54:20

标签: javascript recursion multidimensional-array nested-loops

我有像这样的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}]}]
}
]

我需要使用递归函数还是只需要一个简单的循环就可以了?实现它的最有效方法是什么?

1 个答案:

答案 0 :(得分:3)

您必须使用递归function。简单循环不起作用,因为在n和最高objects级别中arraynvar 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/