遍历树结构,当节点的children为空时,递归处理children设为undefined(递归)(整理)

简介: 遍历树结构,当节点的children为空时,递归处理children设为undefined(递归)(整理)
//如果children为空数组,则children为 undefined
getTree() {
  this.$get('/distribution/pc/org/getTree/' + 0 + '/' + 0, {}).then((res) => {
    if (res.code == 1000) {
      this.options = this.getTreeData(res.data);  //获取树结构值
      res.data =[{
               label: '一级 1',
               children: [{
                 label: '二级 1-1',
                 children: []
               }]
             }, {
               label: '一级 2',
               children: [{
                 label: '二级 2-1',
                 children: [{
                   label: '三级 2-1-1'
                 }]
               }, {
                 label: '二级 2-2',
                 children: [{
                   label: '三级 2-2-1'
                 }]
               }]
             }, {
               label: '一级 3',
               children: []
             }]
      this.getTreeData(res.data); //获取树结构值
    }
  })
},
getTreeData(data) {
  // 循环遍历json数据
  for (var i = 0; i < data.length; i++) {
    //if(data[i].level == 1){ //可根据数据返回值-添加需要参数-此条件禁止第一列选中
      //data[i].disabled = true
    //}
    if (data[i].children.length < 1) {
      // children若为空数组,则将children设为undefined
      data[i].children = undefined;
    } else {
      // children若不为空数组,则继续 递归调用 本方法
      this.getTreeData(data[i].children);
    }
  }
  return data;
},
props: 返回参数不匹配的话,修改值比如children: 'child', 
<el-cascader :options="options" v-model="rankData.areaIdAll"
            :props="{value: 'id', label: 'name', children: 'child', multiple: true, checkStrictly: true }"
            collapse-tags style="width: 400px;" @change="change2(rankData.areaIdAll)"></el-cascader>
//获取选择后的值
change2(idList) {
  console.log(idList,'236')
  if (idList.length == 0) {
    this.areaId = [];
    return false;
  }
  var newArr1 = []; // 去重后的
  var newArr2 = []; // 重复的
  var newArr3 = []; // 只出现一次的
  if (idList.length > 1) {
    for (var i = 0; i < idList.length; i++) {
      for (var j = 0; j < idList[i].length; j++) {
        var v = idList[i][j];
        // 判断是否存在数组中,不存在在往下走
        if (!newArr1.includes(v)) {
          newArr1.push(v);
        } else {
          newArr2.push(v);
        }
      }
    }
    for (var i = 0; i < newArr1.length; i++) {
      var v = newArr1[i];
      if (!newArr2.includes(v)) {
        newArr3.push(v);
      }
    }
  } else {
    for (var i = 0; i < idList.length; i++) {
      for (var j = 0; j < idList[i].length; j++) {
        var v = idList[i][j];
        // 判断是否存在数组中,不存在在往下走
        if (!newArr1.includes(v)) {
          newArr1.push(v);
        } else {
          newArr2.push(v);
        }
      }
    }
    for (var i = 0; i < newArr1.length; i++) {
      if (newArr3.indexOf(newArr1[newArr1.length - 1]) === -1) {
        newArr3.push(newArr1[newArr1.length - 1])
      }
    }
  }
  this.areaId = newArr3;
},

外图:禁止选择省市区

相关文章
|
4月前
|
JSON 前端开发 数据格式
使用 el-tree 实现计算每个非叶子节点的后代节点的个数并显示
本文介绍了如何使用ElementPlus的`el-tree`组件实现计算并显示每个非叶子节点后代节点的个数,以及后代节点中ID为一万倍数的个数。
167 1
使用 el-tree 实现计算每个非叶子节点的后代节点的个数并显示
|
5月前
|
语音技术
语音识别-----列表的常用操作课后练习讲解,用变量追加,取出第一个,取出最后一个,下标位置,列表的循环遍历,下标+1的写法,len下标可以小于这个值,while循环对index循环的遍历
语音识别-----列表的常用操作课后练习讲解,用变量追加,取出第一个,取出最后一个,下标位置,列表的循环遍历,下标+1的写法,len下标可以小于这个值,while循环对index循环的遍历
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
数组筛选,将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10元素选出来,放入新数组,声明一个新的数组用于存放新数据newArr,遍历原来的旧数组,找到大于10的元素,依次追加新数组
|
7月前
|
Java
DAY-1 | Java数据结构之链表:删除无头单链表中等于给定值 val 的所有节点
力扣203题解:使用时间复杂度为O(n)的思路删除链表中所有值为key的元素。引入辅助指针pre,记录cur的前一个节点,遍历链表时,若cur.val!=key,pre和cur同时前进;若cur.val==key,则pre.next=cur.next,cur继续前进,确保pre不急于跟随以处理连续相同值的情况。遍历结束后,处理头节点可能需要删除的特殊情况。
51 0
|
7月前
|
存储
力扣 合并两个有序数列||移除元素
力扣 合并两个有序数列||移除元素
45 0
|
7月前
|
JavaScript 小程序
遍历类数组之获取多个dom节点并遍历
遍历类数组之获取多个dom节点并遍历
【链表OJ 1】移除链表元素val
【链表OJ 1】移除链表元素val
【LC】移除链表元素, 链表的中间节点, 合并两个有序链表
【LC】移除链表元素, 链表的中间节点, 合并两个有序链表
99 0
【LC】移除链表元素, 链表的中间节点, 合并两个有序链表
|
JavaScript
DOM ------ 子节点第一个元素和最后一个元素
DOM ------ 子节点第一个元素和最后一个元素
|
前端开发
el-tree懒加载中使用递归更改树节点状态值
el-tree懒加载中使用递归更改树节点状态值
253 0