使用递归嵌套父子

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/