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

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

我想得到如下:

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

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

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

阅读 2.5k
2 个回答
'A/B/C/'.match(/.\//g)
    .map(
        (name, index, array) => ({
            name,
            path: array.filter(
                (item, subIndex) => subIndex <= index
            ).join('')
        })
    )

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

'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

推荐问题