后台返回一个扁平化菜单数据,写出方法,将数据变成 树形结构

该代码实现了一个JavaScript函数convertToTree,它接受一个包含菜单信息的一维数组,其中每个菜单项包含id和pid(父级id),并将这些数据转换为树形结构。根菜单的pid为-1。函数通过遍历和递归的方式将子菜单添加到对应的父菜单的child属性中,最后返回根菜单数组。
摘要由CSDN通过智能技术生成

 给的数据如下:

  const menuData = [
        { name: "一级菜单1", child: [], id: 0, pid: -1 },
        { name: "一级菜单2", child: [], id: 1, pid: -1 },
        { name: "一级菜单3", child: [], id: 2, pid: -1 },
        { name: "二级菜单1", child: [], id: 3, pid: 0 },
        { name: "二级菜单2", child: [], id: 4, pid: 0 },
        { name: "三级菜单1", child: [], id: 5, pid: 3 },
        { name: "三级菜单2", child: [], id: 6, pid: 3 },
        { name: "四级菜单1", child: [], id: 7, pid: 5 },
        { name: "四级菜单3", child: [], id: 8, pid: 5 },
      ];

代码如下:

      function convertToTree(menuData) {
        const rootMenus = [];
        menuData.forEach((menu) => {
          const parentMenu = menuData[menu.pid];
          if (menu.pid === -1) {
            rootMenus.push(menu);
          } else {
            parentMenu.child.push(menu);
          }
        });
        return rootMenus;
      }
      // 使用示例
      const menuData = [
        { name: "一级菜单1", child: [], id: 0, pid: -1 },
        { name: "一级菜单2", child: [], id: 1, pid: -1 },
        { name: "一级菜单3", child: [], id: 2, pid: -1 },
        { name: "二级菜单1", child: [], id: 3, pid: 0 },
        { name: "二级菜单2", child: [], id: 4, pid: 0 },
        { name: "三级菜单1", child: [], id: 5, pid: 3 },
        { name: "三级菜单2", child: [], id: 6, pid: 3 },
        { name: "四级菜单1", child: [], id: 7, pid: 5 },
        { name: "四级菜单3", child: [], id: 8, pid: 5 },
      ];
      const rootMenus = convertToTree(menuData);
      console.log(rootMenus);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值