- 返回结果如图【可直接控制台打印】:
const result = diguiTree(tree, ‘2.1.1.1’, ‘id’)

- 代码
var tree = [
{
id: '1',
name: 1,
parentId: '0',
children: [
{
id: '1.1',
name: '1.1'
},
{
id: '1.2',
name: '1.2'
},
{
id: '1.3',
name: '1.3'
}
]
},
{
id: '2',
parentId: '0',
name: 2,
children: [
{
id: '2.1',
name: '2.1',
parentId: 2,
children: [
{
id: '2.1.1',
name: '2.1.1',
parentId: '2.1',
children: [
{
id: '2.1.1.1',
name: '2.1.1.1',
parentId: '2.1.1',
}
]
}
]
},
{
id: '2.2',
name: '2.2',
parentId: 2
}
]
},
{
id: '3',
name: 3,
parentId: '0'
}
]
function diguiTree(data, id, prop = 'id') {
let end = []
for (let i = 0; i < data.length ; i++) {
const item = data[i]
if (item[prop]== id) {
end.push(item)
break
} else {
if (item.children && item.children.length > 0) {
const iend = diguiTree(item.children, id, prop)
if (iend.length > 0) { // iend 是最后一级
end.push(item) // 把当前级筛进去
end = [...end, ...iend]
break
}
}
}
}
return end
}
const result = diguiTree(tree, '2.1.1.1')
console.log('result', result)