1、树形结构数据
const treeData = [
{
"id":"1",
"code":"YSWY",
"name":"A",
"level":1,
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A",
"delFlag":"0",
"lastFlag":"0",
"assessType":"",
"children":[
{
"id":"CcDnV21mdCGY3-kE3D6t7h",
"code":"in",
"name":"A_1",
"level":2,
"parentId":"1",
"parentName":"A_1",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A_1",
"delFlag":"0",
"lastFlag":"0",
"children":[
{
"id":"BotKg1IiZKj4OU82dvmOao",
"code":"look",
"name":"A_1_1",
"level":3,
"parentId":"CcDnV21mdCGY3-kE3D6t7h",
"parentName":"A_1_1",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A_1_1",
"delFlag":"0",
"lastFlag":"0",
"children":[
{
"id":"CVmPn_U1pFLoJckxeGqsNc",
"code":"in",
"name":"A_1_1_1",
"level":4,
"parentId":"BotKg1IiZKj4OU82dvmOao",
"parentName":"A_1_1_1",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A_1_1_1",
"delFlag":"0",
"lastFlag":"1",
"assessType":"1",
"children":[
]
},
{
"id":"DNc4_PgOtHOKe72mh-Cxj9",
"code":"in2",
"name":"物业介入2",
"level":4,
"parentId":"BotKg1IiZKj4OU82dvmOao",
"parentName":"查验合同",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"永升物业",
"delFlag":"0",
"lastFlag":"1",
"assessType":"2",
"children":[
]
}
]
}
]
},
{
"id":"BL1ujPRJZPi79pv9wjBU82",
"code":"zhichulei",
"name":"A_2",
"level":2,
"parentId":"1",
"parentName":"A_2",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A_2",
"delFlag":"0",
"lastFlag":"0",
"assessType":"",
"children":[
{
"id":"ATyXgN9AZDlJdKuqLom604",
"code":"hr_cfc",
"name":"A_2_1",
"level":3,
"parentId":"BL1ujPRJZPi79pv9wjBU82",
"parentName":"A_2_1",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A_2_1",
"delFlag":"0",
"lastFlag":"0",
"assessType":"",
"children":[
{
"id":"B3A9S4f1FAIawjI-Ptklog",
"code":"peixun",
"name":"A_2_1_1",
"level":4,
"parentId":"ATyXgN9AZDlJdKuqLom604",
"parentName":"A_2_1_1",
"businessLineId":"1",
"businessGroupId":"2",
"businessLine":"",
"businessGroup":"A_2_1_1",
"delFlag":"0",
"lastFlag":"1",
"assessType":"2",
"children":[
]
}
]
}
]
}
]
}
]
2、利用递归循环
const getPath = (arr, id) => {
return arr.reduce((total, item) => {
if (item.id == id) {
total.push(item)
}else{
if (item.children && item.children.length) {
let path = getPath(item.children, id)
console.log(path)
if (path && path.length) {
total.unshift(item, ...path)
}
}
}
return total
}, [])
}
console.log(getPath(treeData, 'ATyXgN9AZDlJdKuqLom604'))
或
const getPath = (arr, id) => {
for (let i = 0; i < arr.length; i++) {
const item = arr[i]
if (item.id == id) {
return [item]
} else if (item.children && item.children.length) {
let path = getPath(item.children, id)
console.log(path)
if (path && path.length) {
path.unshift(item)
return path
}
}
}
}
console.log(getPath(treeData, 'BotKg1IiZKj4OU82dvmOao'))