You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS如何将路径映射对象数组拼接为完整文件夹层级路径

JavaScript对象数组拼接完整文件夹路径方案

实现思路

  • 先构建父路径映射表:遍历所有节点,以innerpath为键、outerpath为值存储,可快速查询任意路径的上级父路径
  • 筛选叶子节点:id === "Level 1"的节点为路径最末端,无下级子文件夹,从这类节点开始向上溯源
  • 逐层拼接路径:对每个叶子节点,从当前末端路径开始,不断查找父路径拼接至路径头部,直到找不到父路径即得到完整层级路径

完整代码实现

function buildFullPaths(pathNodeArr) {
  // 构建父路径映射表
  const parentPathMap = {}
  pathNodeArr.forEach(node => {
    parentPathMap[node.innerpath] = node.outerpath
  })
  // 筛选所有最低层级的叶子节点
  const leafNodes = pathNodeArr.filter(node => node.id === 'Level 1')
  const fullPathResult = []
  leafNodes.forEach(leaf => {
    // 初始路径为 父路径/当前叶子路径
    let fullPath = `${leaf.outerpath}/${leaf.innerpath}`
    // 向上溯源拼接所有父层级
    let currentParent = parentPathMap[leaf.outerpath]
    while (currentParent) {
      fullPath = `${currentParent}/${fullPath}`
      currentParent = parentPathMap[currentParent]
    }
    fullPathResult.push(fullPath)
  })
  return fullPathResult
}
// 使用方式:直接传入你现有代码生成的folderHierarchy.path数组即可
const resultPaths = buildFullPaths(folderHierarchy.path)
// 打印输出结果
resultPaths.forEach(path => console.log(path))

测试验证

以你给出的第二组补充测试数据为例,执行上述代码后输出结果如下:

test plan/Regression/area 1/Subarea 1
test plan/Regression/area 2
test plan/other testing/other testing area 1
test plan/other testing/other testing area 2/other testing subarea 1
test plan/Regression/area 1/Subarea 2/SubSubArea 1

完全符合预期的路径拼接规则,支持任意层级嵌套、任意数量的顶层路径场景。如果需要规避极端情况下的路径循环问题,可以在溯源时新增已访问路径的判断,避免死循环。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:27:04