账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    对一段 js 的树结构中通过子节点查找它所有父节点的代码感到不解,望路过大佬能帮忙解答一下,谢谢
    59
    0
    前端小白一枚,有一段 js 在树结构中通过子节点去查找它所有的父节点的代码片段,看到有不解的地方,百思不得其解,希望有大佬能路过帮忙解答一下,代码如下:var data2= [{ id: 1, label: '一级 1', children: [{ id: 4, label: '二级 1-1', children: [{ id: 10, label: '三级 1-1-2', children: [{ id: 20, label: '四级 1-1-2-1' }] }] }]}];function getParentId(list,id) { for (let i in list) { if(list[i].id === id){ return [list[i]]; } if(list[i].children){ let node = getParentId(list[i].children, id); console.log(node); if(node !== undefined){ return node.concat(list[i]); } } } }getParentId(data2, 20);打印结果:疑问:在 node 为 [20] 时,会走到它下面的判断中,最后通过 concat 能得到 [20, 10],但是不明白 4 和 1 是什么时候拿到的,而且都已经在 node !== undefined 的判断语句中将代码 return 了,它又是在什么时候进入的循环呢?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在JavaScript中,树结构的数据结构是一种特殊的数组,每个节点可以有多个子节点。如果你想在树结构中查找某个节点的所有父节点,你可以使用递归来实现。

      以下是一个简单的实现方法:

      javascript function findParentNodes(node, parentNodes = []) { if (node === parentNodes[node.id]) { return parentNodes; } parentNodes.push(node); return findParentNodes(node.children, parentNodes); }

      在这个函数中,我们首先检查当前节点是否是parentNodes数组中的某个元素。如果是,那么我们找到了一个父节点,直接返回。否则,我们将其添加到parentNodes数组中,然后递归地查找其子节点。

      这个函数假设你的树结构有一个名为id的属性,这个属性可以用来唯一标识每个节点。

    • 暮雨声寒 普通会员 2楼

      在JavaScript中,树结构的数据结构是一种特殊的数组,每个节点可以有多个子节点。如果你想在树结构中查找某个节点的所有父节点,你可以使用递归来实现。

      以下是一个简单的实现方法:

      javascript function findParentNodes(node, parentNodes = []) { if (node === parentNodes[node.id]) { return parentNodes; } parentNodes.push(node); return findParentNodes(node.children, parentNodes); }

      在这个函数中,我们首先检查当前节点是否是parentNodes数组中的某个元素。如果是,那么我们找到了一个父节点,直接返回。否则,我们将其添加到parentNodes数组中,然后递归地查找其子节点。

      这个函数假设你的树结构有一个名为id的属性,这个属性可以用来唯一标识每个节点。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部