树形数据 查找指定节点的当前父节点
有以下数据结构,如果id是9,则找出对应的父节点是:
{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}
我写了一个函数,输出的不正确,问题在哪里呢
const data = [
{
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
},
{
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
},
{
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}];
let parantNode = null
function findParentNode(arr, id) {
parantNode = arr;
for (let i in arr) {
if (arr[i].id === id) {
return;
}
if (arr[i].children) {
findParentNode(arr[i].children, id)
}
}
return parantNode;
}
console.log(findParentNode(data, 10));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
递归的核心是返回函数结果,给你改写了下,没用parantNode
1楼楼主说的很精确:递归的核心是返回函数结果(多次return但是只需要返回一个正确结果)。
其实递归就像koa的洋葱模型一样:
返回就代表着响应。从最后一层返回,然后函数只接受第一层的返回值,所以需要把最后一层得到的正确答案return出去,然后通过上一层依此传递正确结果,直至最顶层,最终return出去了target。