树节点递归,与扁平化数组转树结构

数据结构
 data: [
          {
          label: '广东',
          id:12,
          children: [{
            label: '广州',
            id:121,
            children: [
              {label: '天河',id:1213},
               {label: '越秀',id:1215},
                {label: '南山',id:1216},
                 {label: '番禺',id:1217},
            ]
          },
          {
            label: '佛山',
            id:122,
            children: [
               {label: '南海',id:1223},
               {label: '禅城',id:1225},
                {label: '顺德',id:1226},
                 {label: '狮山',id:1227},
             
            ]
          },
          {
            label: '深圳',
            id:123,
            children: [
              {label: '南山',id:1233},
               {label: '布吉',id:1235},
                {label: '罗湖',id:1236},
                 {label: '坪山',
                 id:1237,
                 children: [
              {label: '南山',id:12331},
               {label: '布吉',id:12352},
                {label: '罗湖',id:12363},
                 {label: '坪山',id:12374}]
                 },
            ]
          },
          ]
        },
         {
          label: '福建',
          id:22,
          children: [{
            label: '福州',
            id:221,
            children: [
              {label: '天河',id:2213},
               {label: '越秀',id:2215},
                {label: '南山',id:2216},
                 {label: '番禺',id:2217},
            ]
          },
          {
            label: '厦门',
            id:122,
            children: [
               {label: '南海',id:2223},
               {label: '禅城',id:2225},
                {label: '顺德',id:2226},
                 {label: '狮山',id:2227},
             
            ]
          },
          {
            label: '泉州',
            id:123,
            children: [
              {label: '南山',id:2233},
               {label: '布吉',id:2235},
                {label: '罗湖',id:2236},
                 {label: '坪山',id:2237},
            ]
          },
          ]
        },

方法

init(list){
       list.forEach(item =>{
          item.show = false
          this.arr.push(item.id)
          if (item.children) {
           this.init(item.children)
         }
       })
     console.log(new Set(this.arr))
},
     diguiclick(){
    this.init(this.data)
     },



 // 递归获取树节点id数组
     inits(list){
       this.selectArr = []
          this.selectArr.push(list.id)
          if (list.children) {
           this.inits(list.children[0])
         }
      //  })
     console.log(new Set(this.selectArr))
},
    // 获取搜索条件
    init(){
      this.inits(this.currentNode)
     getAdvancedSearchCondition(this.selectArr).then(res =>{
       console.log(res)
       this.datas = res
     })
    },
 
 
 数组转树结构示例
convert() {

let tree = [
{ id: 1, pid: 'root', name: '1' },
{ id: 2, pid: 1, name: '2' },
{ id: 3, pid: 1, name: '3' },
{ id: 4, pid: 'root', name: '4' },
{ id: 5, pid: 4, name: '4' },
{ id: 6, pid: 4, name: '5' },
{ id: 7, pid: 3, name: '7' },
{ id: 8, pid: 4, name: '8' },
]

    

let cloneData = JSON.parse(JSON.stringify(data))
return cloneData.filter(father => {
let branchArr = cloneData.filter(child => father['id'] == child['pid']);
branchArr.length > 0 ? father['children'] = branchArr : '';
return father['pid'] == 'root';

    })

  }

 

 
 

 

posted @ 2020-07-12 18:35  hongwj  阅读(378)  评论(0编辑  收藏  举报