树结构 根据id查找当前选中值的路径

 export function findParentIds(dataSource, nodeId) {

    const parentIds = []; // 用于存储所有父节点ID的数组


    // 定义一个递归函数,用于遍历整棵树并查找子节点的所有父节点

    function traverse(node, nodeId) {

      if (node.id === nodeId) { // 如果当前节点的ID等于子节点的ID,则表示已经找到了子节点,可以开始向上查找父节点

        return true; // 返回true表示已经找到了子节点

      }


      if (node.children) { // 如果当前节点有子节点,则继续遍历子节点

        for (const childNode of node.children) {

          if (traverse(childNode, nodeId)) { // 如果在子节点中找到了子节点的父节点,则将当前节点的ID添加到父节点ID数组中,并返回true表示已经找到了子节点

            parentIds.push(node.id);

            return true;

          }

        }

      }


      return false; // 如果当前节点不是子节点的父节点,则返回false

    }


    // 从根节点开始遍历整棵树,并调用递归函数查找子节点的所有父节点

    for (const node of dataSource) {

      if (traverse(node, nodeId)) { // 如果在当前节点的子树中找到了子节点的父节点,则直接退出循环

        break;

      }

    }


    return parentIds; // 返回所有父节点ID的数组

  }


注册到全局使用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容