zoukankan      html  css  js  c++  java
  • 04-树形结构转数组/数组转树形结构/树形结构传入指定id找到所在那一项

    树形结构转成(平铺)数组

    var arr =  [{
        label: '一级 1',
        children: [{
          label: '二级 1-1',
          children: [{
            label: '三级 1-1-1'
          }]
        }]
      }, {
        label: '一级 2',
        children: [{
          label: '二级 2-1',
          children: [{
            label: '三级 2-1-1'
          }]
        }, {
          label: '二级 2-2',
          children: [{
            label: '三级 2-2-1'
          }]
        }]
      }, {
        label: '一级 3',
        children: [{
          label: '二级 3-1',
          children: [{
            label: '三级 3-1-1'
          }]
        }, {
          label: '二级 3-2',
          children: [{
            label: '三级 3-2-1'
          }]
        }]
      }]
    
      
      function becomeArr(arr){
        let newArr = [];
        ~function fn(arr){
          arr.forEach(item=>{
            if(item.children && item.children.length > 0){
              fn(item.children);
            }
            newArr.push({
                label:item.label
              })
          })
        }(arr)
      return newArr;
    }
    let res = becomeArr(arr);
    console.log(res);

    数组(有parentId)转树形结构

    var arr = [
      {
        id:'00',
        nam:'公司'
      },{
        id:'01',
        name:'一级部门',
        parentId:'00'
      },{
        id:'02-1',
        name:'二级部门',
        parentId:'01'
      },{
        id:'02-2',
        name:'二级部门',
        parentId:'01'
      },{
        id:'03-1',
        name:'三级部门',
        parentId:'02-2'
      },{
        id:'03-2',
        name:'三级部门',
        parentId:'02-2'
      },
    ];
    
    function becomeTree(arr){
      let parArr = arr.filter(x=>!x.parentId);
      let sonArr = arr.filter(x=>x.parentId);
    
      function fn(par,son){
        par.forEach(item=>{
          son.forEach(x=>{
            if(item.id === x.parentId){
              fn([x],sonArr)
              if(!item.children){
                item.children=[];
              }
              item.children.push(x)
            }
          })
        })
      }
      fn(parArr,sonArr);
      return parArr;
    }
    
    let res = becomeTree(arr);
    console.log(res);

     树形结构传入指定id找到所在那一项

    var data = [{
            id: 1,
            label: '一级 1',
            children: [{
                id: 2,
                label: '二级 1-1',
                children: [{
                    id: 3,
                    label: '三级 1-1-1'
                }]
            }]
        }, {
            id: 4,
            label: '一级 2',
            children: [{
                id: 5,
                label: '二级 2-1',
                children: [{
                    id: 6,
                    label: '三级 2-1-1'
                }]
            }, {
                id: 7,
                label: '二级 2-2',
                children: [{
                    id: 8,
                    label: '三级 2-2-1'
                }]
            }]
        }, {
            id: 9,
            label: '一级 3',
            children: [{
                id: 10,
                label: '二级 3-1',
                children: [{
                    id: 11,
                    label: '三级 3-1-1'
                }]
            }, {
                id: 12,
                label: '二级 3-2',
                children: [{
                    id: 13,
                    label: '三级 3-2-1'
                }]
            }]
        }]
        // 这里用找传入的指定id,返回传入的这个id所在的那个对象
    function findObjFn(arr, id) {
        let temp = null;
        (function fn(arr, id) {
            arr.forEach(item => {
                if (item.id === id) {
                    temp = item;
                }
                if (item.children && item.children.length > 0) {
                    fn(item.children, id);
                }
            })
        })(arr, id)
        return temp;
    }
    let res = findObjFn(data, 5)
    console.log(res);
  • 相关阅读:
    gw经销商上传部分代码
    lib
    【转】sql server的随机函数newID()和RAND()
    【源码】仿qq记住登录信息
    关于ConfigurationManager类
    oracle 10 协议适配器错误解决办法
    配置对象数据源时,无法找到业务对象的解决办法
    private的由来,让能你很容易地区分private与protected的用法!
    大树扎根不稳,缘何不倒?
    Html服务器控件常用属性InnerHtml属性及InnerText属性的区别
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14893906.html
Copyright © 2011-2022 走看看