JavaScript如何将斜杠分隔路径动态转为带parent属性的对象数组
问题描述
接收到斜杠分隔格式的文件路径字符串,示例如下:
let sampletext="Home/Student/Hello.txt";
需要动态将该字符串转换为带层级父子关系的数组,目标输出结构如下:
let idarray=[ { 'id':'Home', 'parent': '', }, { 'id':'Student', 'parent': 'Home', }, { 'id':'Hello.txt', 'parent': 'Student', } ]
最优实现方案
核心思路:先通过/分割字符串得到所有路径节点,再遍历节点列表组装父子关系:首节点的父级为空字符串,其余节点的父级为当前遍历位置的前一个节点即可。
完整实现代码:
const sampletext = "Home/Student/Hello.txt"; // 分割路径,同时过滤首尾斜杠、连续斜杠产生的空值,兼容异常路径格式 const pathNodes = sampletext.split('/').filter(item => item); const idarray = pathNodes.map((currentId, index) => ({ id: currentId, parent: index === 0 ? '' : pathNodes[index - 1] }));
方案优势
- 性能最优:仅做一次分割、一次遍历,时间复杂度为O(n),无多余嵌套计算
- 兼容性强:自动处理路径首尾多余斜杠、路径中连续斜杠的异常场景,比如传入
/Home//Student/Hello.txt/也能得到正确结果 - 易维护:代码逻辑直白,没有复杂隐式逻辑,后续调整需求成本低
内容的提问来源于stack exchange,提问作者user19350796
相关产品推荐
相关产品推荐

