由于业务需求 要从以下的树结构中获取停车场节点
由上图可见层级关系 用递归方式实现层层遍历提取出停车场节点
<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>
最终效果