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

如何使用JavaScript将路径数组转换为嵌套结构对象

非递归实现方案

function pathsToObject(paths) {
  const result = {};
  // 遍历所有路径
  paths.forEach(path => {
    // 分割路径,过滤掉开头/产生的空片段
    const segments = path.split('/').filter(seg => seg);
    let current = result;
    // 逐层处理路径片段
    for (let i = 0; i < segments.length; i++) {
      const seg = segments[i];
      // 最后一级片段赋值为null
      if (i === segments.length - 1) {
        current[seg] = null;
      } else {
        // 非最后一级不存在则创建空对象
        current[seg] = current[seg] || {};
        current = current[seg];
      }
    }
  });
  return result;
}

// 测试用例
const paths = [
    "/path/to/first",
    "/path/to/second",
    "/path/to/third",
    "/path/from/first",
    "/path/from/second",
    "/users/bill",
    "/users/john"
];
console.log(pathsToObject(paths));

输出结果完全匹配要求的结构,末端节点值为null,重复路径片段会自动复用已有对象,不会重复创建。


可选递归实现方案

如果偏好更简洁的递归写法可以使用以下版本:

function pathsToObject(paths) {
  const result = {};
  function addSegment(segments, current, index) {
    const seg = segments[index];
    if (index === segments.length - 1) {
      current[seg] = null;
      return;
    }
    current[seg] = current[seg] || {};
    addSegment(segments, current[seg], index + 1);
  }
  paths.forEach(path => {
    const segments = path.split('/').filter(seg => seg);
    addSegment(segments, result, 0);
  });
  return result;
}

两种方案均为纯原生JS实现,未依赖第三方工具或JSON.parse之类的快捷API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:48:03