遍历树层级结构提取出叶子节点

由于业务需求 要从以下的树结构中获取停车场节点

在这里插入图片描述在这里插入图片描述

由上图可见层级关系 用递归方式实现层层遍历提取出停车场节点

<script>
// 获取停车场树叶子节点
function getTreeChildNodes(nodes,nameStr){
  if(!nodes || !nodes.length){
    return [];
  }else{
    let arr = []
    for(let i = 0; i<nodes.length; i++){
      if(nodes[i].isParent && nodes[i].children){
        let name = nodes[i].name.replace(/\(.*?\)/g, '')
        name = (nameStr ? nameStr+'-' : '') + name
        let tmpArr = getTreeChildNodes(nodes[i].children,name)
        arr = tmpArr.concat(arr)
      }else{
        nodes[i].title = nameStr
        if(nameStr){
          nodes[i].topArea = adjustProvinceNameOfParkingLot(nameStr.substring(0,nameStr.indexOf('-')))
        }else{
          nodes[i].topArea = ''
        }
        arr.push(nodes[i])
      }
    }
    return arr;
  }
}

// 调整停车场所属省份名
function adjustProvinceNameOfParkingLot(provinceName){
  if(!provinceName){
    return provinceName
  }
  let idx = 0
  let rsStr = ''
  provinceName = provinceName.replace(/\(.*?\)/g, '')
  if(provinceName.indexOf('省')>-1){
    idx = provinceName.indexOf('省')
  }else if(provinceName.indexOf('自治区')>-1){
    idx = provinceName.indexOf('自治区')
  }else if(provinceName.indexOf('市')>-1){
    idx = provinceName.indexOf('市')  
  }else if(provinceName.length > 6){
    idx = 1
  }
  if(idx!==0){
    rsStr = provinceName.substring(0,idx)
    return rsStr
  }else{
    return provinceName
  }
}
</script>

最终效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值