1.数据结构格式

 arr: [
        { id: 1, icon: "user", name: "张安", hidden: true },
        {
          id: 2,
          icon: null,
          name: "张三",
          hidden: false,
          children: [
            {
              id: 4,
              name: "张三2",
              icon: "",
              type: 0,
              level: 1,
              meta:['admin']
            },
            {
              id: 5,
              name: "张三3",
              icon: "",
              type: 0,
              level: 2,
              meta:['admin']
            },
          ],
        },
      ],

 改造数据格式

  arr: [
        { index: 1,  name: "张安", },
        {
          index: 2,
          name: "张三",
          children: [
            {
              index: 4,
              name: "张三2",
              meta:['admin']
            },
            {
              index: 5,
              name: "张三3",
              meta:['admin']
            },
          ],
        },
      ],

 2.定义递归函数

  /* 
        data-----数据源
      */
      setData(data){
         data.forEach((v,index)=>{
            //  判断对象中是否有children
             if(v.children && v.children.length>0){
                 data[index]={
                        index:v.id,
                        name:v.name,
                        children:v.children,
                    }
                // 对children项递归
                 this.setData(v.children)
             }else{
                //  没有children直接赋值
                 data[index]={
                        index:v.id,
                        name:v.name,
                        meta:v.meta ? v.meta : null
                    }
             }             
         })
         return data                               
      }
      

3.调用

 let arr= this.setData(this.arr)
 console.log(arr);

 结果展示

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐