如何计算嵌套对象的深度?

Kam*_*zyk 1 javascript nested object depth

我有一个嵌套对象的示例数组:

let arr = [{id: 0, children: []},
           {id: 1, children:[
             {id: 2, children: []},
             {id: 3, children: [
               {id: 4, children: []} 
             ]}
           ]}
         ];
Run Code Online (Sandbox Code Playgroud)

我需要计算每个对象的深度级别。在所有对象中我也有一个parentId 属性。

结果应该是:

let arr = [{id: 0, depth: 0, children: []},
           {id: 1, depth: 0, children:[
             {id: 2, depth: 1, children: []},
             {id: 3, depth: 1, children: [
               {id: 4, depth: 2, children: []} 
             ]}
           ]}
         ];
Run Code Online (Sandbox Code Playgroud)

我也有一个平面结构中所有对象的数组。

解决方案?

Mar*_*yer 8

只需创建一个函数,该函数接受一个数组和一个depth参数,将该深度添加到数组中的所有对象。children然后以递增的深度在数组上调用它:

let arr = [{id: 0, children: []},{id: 1, children:[{id: 2, children: []},{id: 3, children: [{id: 4, children: []} ]}]}];

function addDepth(arr, depth = 0) {
  arr.forEach(obj => {
    obj.depth = depth
    addDepth(obj.children, depth + 1)
  })
}

addDepth(arr)
console.log(arr)
Run Code Online (Sandbox Code Playgroud)