树结构根据子节点返回相应父节点树结构?

作者站长头像
站长
· 阅读数 5

假设树结构如下:

tree = [
        {
          id: 1,
          label: '节点-1',
          child: [
            {
              id: 2,
              label: '节点-2',
              child: [
                {
                  id: 3,
                  label: '节点-3',
                  child: [
                    {
                      id: 6,
                      label: '节点-6'
                    }
                  ],
                }
              ]
            },
            {
              id: 4,
              label: '节点-4',
              child: [
                {
                  id: 5,
                  label: '节点-5',
                  child: [
                    {
                      id: 7,
                      label: '节点-7'
                    }
                  ],
                }
              ]
            },
          ]
        }
      ]

我想找出id === 7的所有父节点,并且也是树结构形式,请教各位大佬!

回复
1个回答
avatar
test
2024-07-08

用递归来找就行了:

function findParentNode(tree, targetId) {
  if (!tree || !Array.isArray(tree)) return null;

  for (let node of tree) {
    if (node.id === targetId) {
      return [node];
    }

    if (node.child) {
      const path = findParentNode(node.child, targetId);
      if (path) {
        return [{ id: node.id, label: node.label, child: path }];
      }
    }
  }

  return null;
}

const tree = [
  // ...
];

const result = findParentNode(tree, 7);
console.log(result);
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容