var arrData = [{
"label": "中国",
"parentId": null,
"id": "0",
"children": [{
"label": "河北",
"parentId": "0",
"id": "1",
"children": [{
"label": "石家庄",
"parentId": "1",
"id": "1.1",
"children": null
},
{
"label": "保定",
"parentId": "1",
"id": "1.2",
"children": null
},
{
"label": "邯郸",
"parentId": "1",
"id": "1.3",
"children": [{
"label": "邯山区",
"parentId": "1.3",
"id": "1.3.1",
"children": [{
"label": "丛西街道",
"parentId": "1.3.1",
"id": "1.3.1.1",
"children": null
}]
},
{
"label": "涉县",
"parentId": "1.3",
"id": "1.3.2",
"children": null
},
{
"label": "丛台区",
"parentId": "1.3",
"id": "1.3.3",
"children": null
}
]
}
]
},
{
"label": "山东",
"parentId": "0",
"id": "2",
"children": [{
"label": "济南",
"parentId": "2",
"id": "2.1",
"children": null
}]
},
{
"label": "北京",
"parentId": "0",
"id": "3",
"children": null
}
]
},];
function findParents(treeData,id){
let allparents = []
if(treeData.length==0){
return
}
let findele = (data,id) => {
if(!id) return
data.forEach((item,index) => {
if(item.id == id){
allparents.unshift(item.id)
findele(treeData,item.parentId)
}else{
if(!!item.children){
findele(item.children,id)
}
}
})
}
findele(treeData,id)
return allparents
}
console.log('result',findParents(arrData,"1.3.1.1"))
从下往上
function findParents(treeData,id){
if(treeData.length==0) return
for(let i=0;i<treeData.length;i++){
if(treeData[i].id == id){
return []
}else{
if(treeData[i].children){
let res = findParents(treeData[i].children,id)
if(res !== undefined){
return res.concat(treeData[i].id)
}
}
}
}
}
···
网友评论