美文网首页
最基本的递归组装树

最基本的递归组装树

作者: 我背井离乡了好多年 | 来源:发表于2021-04-21 14:01 被阅读0次
<template>
  <div style="width: 100%;height:100%;background-color:#ccc;"><pre style="font-size:20px;">{{aa}}</pre></div>
</template>
<script>
let sourceData = [
  {
    id: 1,
    parentId: 0
  },
  {
    id: 2,
    parentId: 0
  },
  {
    id: 3,
    parentId: 0
  },
  {
    id: 4,
    parentId: 1
  },
  {
    id: 5,
    parentId: 1
  }
];

export default {
  data() {
    return {
      aa: ""
    };
  },
  mounted() {
    this.dragTree();
  },
  methods: {
    dragTree() {
      let treeData = {
        id: 0,
        children: this.dgTree(0, sourceData)
      };
      this.aa = treeData;
    },
    // 反向组装树递归的精髓
    // 就是先找到最高级0,再往下找 看谁的父亲是0,再看谁的父亲又是1
    // 因为顶层0是确定的
    // 一旦顶层确定,就可以依照关系依次往下找
    dgTree(id, pxData) {
      let route = [];
      for (let item of pxData) {
        if (item.parentId === id) {
          route.push({
            id:item.id,
            parentId:item.parentId,
            children:this.dgTree(item.id,pxData)
          });
               
        }
      }
      return route;
    }
  }
};
</script>
Snipaste_2021-04-21_13-57-01.png

!!!!!

1.递归自调用理解的核心1-----大函数与小函数的同名变量互不影响

image.png

2.递归自调用理解的核心2-----执行顺序

image.png

现在我在换种写法,传入数组,返回树


Snipaste_2021-07-08_17-22-08.png Snipaste_2021-07-08_17-22-27.png

相关文章

网友评论

      本文标题:最基本的递归组装树

      本文链接:https://www.haomeiwen.com/subject/wpxzlltx.html