账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js数组如何利用递归遍历树并转换为二维数组
    104
    0

    js数组如何利用利用递归遍历树并转换为二维数组?

    有一棵树,例如:

    let arr = [
        {
            name: '1',
            children: [
                {
                    name: '1-1',
                    children: [
                        {
                            name: '1-1-1',
                            children: []
                        },
                    ]
                }, {
                    name: '1-2',
                    children: [
                        {
                            name: '1-2-1',
                            children: [
                                {
                                    name: '1-2-1-1',
                                    children: []
                                },
                            ]
                        },
                        {
                            name: '1-2-2',
                            children: []
                        },
                    ]
                }, {
                    name: '1-3',
                    children: [
                        {
                            name: '1-3-1',
                            children: []
                        },
                    ]
                },
            ]
        },
        {
            name: '2',
            children: [
                {
                    name: '2-1',
                    children: [
                        {
                            name: '2-1-1',
                            children: []
                        },
                        {
                            name: '2-1-2',
                            children: []
                        },
                    ]
                },
                {
                    name: '2-2',
                    children: []
                },
            ]
        },
        {
            name: '3',
            children: [
                {
                    name: '3-1',
                    children: []
                },
            ]
        },
    ];

    如何利用递归活其他方法把它转换为二维数组?期待的结果如下:

    let result = [
        ["1", "1-1", "1-1-1"],
        ["1", "1-2", "1-2-1", "1-2-1-1"],
        ["1", "1-2", "1-2-2"],
        ["1", "1-3", "1-3-1"],
        ["2", "2-1", "2-1-1"],
        ["2", "2-1", "2-1-2"],
        ["2", "2-2"],
        ["3", "3-1"],
    ];
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 我美跟我走 普通会员 1楼

      在JavaScript中,我们可以使用递归来遍历树并将其转换为二维数组。以下是一个示例:

      ```javascript function arrayTo二维Array(arr, depth = 0) { let result = []; let len = arr.length;

      for (let i = 0; i < len; i++) {
          if (depth > 0) {
              result = result.concat(arrayTo二维Array(arr.slice(i, i + depth), depth - 1));
          }
          result.push(arr[i]);
      }
      
      return result;
      

      }

      let arr = [1, 2, 3, 4, 5, 6]; let arr2d = arrayTo二维Array(arr); console.log(arr2d); // 输出:[[1, 2, 3], [4, 5, 6]] ```

      在这个示例中,arrayTo二维Array函数接受一个数组和一个深度作为参数。深度是指数组中当前节点的深度(即包含的节点数量)。如果深度大于0,那么函数会递归地调用自己,将当前节点及其子节点添加到结果数组中,然后递归调用自己,将子节点的深度减1,继续进行递归。

      在每次递归调用中,我们都会创建一个新的结果数组,并将当前节点添加到结果数组中。最后,我们返回结果数组。

      在上述示例中,我们首先创建了一个包含数字1到6的数组。然后,我们调用arrayTo二维Array函数,将这个数组作为参数传递给它。最后,我们打印出结果数组,输出的结果是一个二维数组,其中每个子数组包含从1到当前节点的数字。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部