前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Web组件库 JS组件方法记录

Web组件库 JS组件方法记录

作者头像
郭顺发
发布2023-07-17 17:53:37
720
发布2023-07-17 17:53:37
举报
文章被收录于专栏:pandacode_cnpandacode_cn

以折叠面板的形式进行组件描述,点击对应的面板会展示对应信息。

代码语言:javascript
复制
/**
        * @description 将扁平化数据 转换成 树状结构
        * @param {Array} arrayList 扁平化的数据
        * @param {String} pidStr parentId的key名
        * @param {String} idStr id的key名
        * @param {String} childrenStr children的key名
        */
       function fommat({arrayList, pidStr = 'pid', idStr = 'id', childrenStr = 'children'}) {
           let listOjb = {}; // 用来储存{key: obj}格式的对象
           let treeList = []; // 用来储存最终树形结构数据的数组
           // 将数据变换成{key: obj}格式,方便下面处理数据
           for (let i = 0; i < arrayList.length; i++) {
               listOjb[arrayList[i][idStr]] = arrayList[i]
           }
           // 根据pid来将数据进行格式化
           for (let j = 0; j < arrayList.length; j++) {
               // 判断父级是否存在
               let haveParent = listOjb[arrayList[j][pidStr]] 
               if (haveParent) {
                   // 如果有没有父级children字段,就创建一个children字段
                   !haveParent[childrenStr] && (haveParent[childrenStr] = [])
                   // 在父级里插入子项
                   haveParent[childrenStr].push(arrayList[j])
               } else {
                   // 如果没有父级直接插入到最外层
                   treeList.push(arrayList[j])
               }
           }
           return treeList
       }
            

        // 测试数据
        var menu_list = [{
          id: '1',
          menu_name: '设置',
          menu_url: 'setting',
          parent_id: 0
        }, {
          id: '1-1',
          menu_name: '权限设置',
          menu_url: 'setting.permission',
          parent_id: '1'
        }, {
          id: '1-1-1',
          menu_name: '用户管理列表',
          menu_url: 'setting.permission.user_list',
          parent_id: '1-1'
        }, {
          id: '1-1-2',
          menu_name: '用户管理新增',
          menu_url: 'setting.permission.user_add',
          parent_id: '1-1'
        }, {
          id: '1-1-3',
          menu_name: '角色管理列表',
          menu_url: 'setting.permission.role_list',
          parent_id: '1-1'
        }, {
          id: '1-2',
          menu_name: '菜单设置',
          menu_url: 'setting.menu',
          parent_id: '1'
        }, {
          id: '1-2-1',
          menu_name: '菜单列表',
          menu_url: 'setting.menu.menu_list',
          parent_id: '1-2'
        }, {
          id: '1-2-2',
          menu_name: '菜单添加',
          menu_url: 'setting.menu.menu_add',
          parent_id: '1-2'
        }, {
          id: '2',
          menu_name: '订单',
          menu_url: 'order',
          parent_id: 0
        }, {
          id: '2-1',
          menu_name: '报单审核',
          menu_url: 'order.orderreview',
          parent_id: '2'
        }, {
          id: '2-2',
          menu_name: '退款管理',
          menu_url: 'order.refundmanagement',
          parent_id: '2'
        }, {
          id: '2-2-1',
          menu_name: '退款管理2-1',
          menu_url: 'order.refundmanagement',
          parent_id: '2-2'
        }
    ]
    
    // 输出
    console.log(
           fommat({
               arrayList: menu_list,
               pidStr: 'parent_id'
           })
       )
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档