猿问

递归树算法如何实现到嵌套递归数组

有一个从哈希树对象得到启发的数组。但是结构设计不佳,有点复杂。


const directories = [

  "/main",

  [

    "folder",

    ["subFolder", ["directory1", "directory2", "directory3"]],

    "folder2",

    ["subFolder", ["directory4", "directory5"]],

    "folder3",

    [

      "subFolder",

      ["directory4", "directory5", "directory6", "directory7"],

      "subFolderWrapper",

      ["folder1", ["subFolder", ["child1", "child2", "child3", "child4"]]]

    ]

  ]

]

必须创建一个递归函数,并根据给定的嵌套关系返回一个新数组。


像这样的东西

const result = [

  "/main/",

  [

    "/main/folder",

    [

      "/main/folder/subFolder",

      [

        "/main/folder/subFolder/directory1",

        "/main/folder/subFolder/directory2",

        "/main/folder/subFolder/directory3"

      ]

    ],

    "/main/folder2",

    [

      "/main/folder2/subFolder",

      [

        "/main/folder2/subFolder/directory4",

        "/main/folder2/subFolder/directory5",

        "/main/folder2/subFolder/directory6",

        "/main/folder2/subFolder/directory7"

      ]

    ],

    "/main/folder3",

    [

      "/main/folder3/subFolder",

      [

        "/main/folder3/subFolder/directory4",

        "/main/folder3/subFolder/directory5",

        "/main/folder3/subFolder/directory6",

        "/main/folder3/subFolder/directory7"

      ],

      "/main/folder3/subs",

      [

        "/main/folder3/subFolderWrapper/folder1",

        [

          "/main/folder3/subs/folder1/subFolder",

          [

            "/main/folder3/subs/folder1/subFolder/directory1",

            "/main/folder3/subs/folder1/subFolder/directory2",

            "/main/folder3/subs/folder1/subFolder/directory3",

            "/main/folder3/subs/folder1/subFolder/directory4"

          ]

        ]

      ]

    ]

  ]

];

我在下面的此函数中尝试了不同的逻辑,但是这是我之前从未见过的不同的树实现。似乎需要应用某种作弊方法。因为我知道两种数组。其中一个是平面,也称为一维,另一个是二维数组。

计算嵌套调用递归函数发生的时间。从项目的当前索引中减去或添加到depthCounter变量中,以到达和访问BFS一样的下一个节点。


我很好奇实现此过程的最佳方法是什么。


料青山看我应如是
浏览 264回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答