JS根据文件夹路径递归得到一个对象型数组

benniu
  • 35

比如一个路径为 A/B/C/ 的文件夹路径

我想得到如下:

[{name:"A",path:"A/"},
 {name:"B",path:"A/B/",
 {name:"C",path:"A/B/C/"
]

我能做的就是先把路径 用split("/") 得到一个数组。然后做个循环。

但好像有个什么reduce 递归的方法可以更简洁的写出上面的需求呢?

回复
阅读 371
2 个回答
'A/B/C/'.split('/').filter(s=>s).map((item,index,array)=>({name:item,path:array.slice(0,index+1).join('/') + '/'}))
 //[{name: "A", path: "A/"},{name: "B", path: "A/B/"},{name: "C", path: "A/B/C/"}]

image.png

'A/B/C/'.match(/.\//g)
    .map(
        (name, index, array) => ({
            name,
            path: array.filter(
                (item, subIndex) => subIndex <= index
            ).join('')
        })
    )

不过我总感觉用正则可能还有更简短的写法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏