【问题标题】:nesting parent-child using recursion使用递归嵌套父子
【发布时间】:2018-05-28 07:17:48
【问题描述】:

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

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

【问题讨论】:

    标签: javascript recursion multidimensional-array nested-loops


    【解决方案1】:

    为此,您必须使用递归 function。简单循环将不起作用,因为在 arrayn 级别中可以有 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))

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

    【讨论】:

    • 如果我只有一个包含数据的数组,我需要在第二个参数中传递什么。
    • 你只需要传递一个参数,第二个参数是recursion。请参阅编辑后的答案。
    猜你喜欢
    • 1970-01-01
    • 2018-06-07
    • 2018-03-04
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多