给定路径“documents/settings/user”
如何将其制作为嵌套对象
结果
{
documents : {
settings : {
user : {}
}
}
}
我想不出如何引用之前的每条路径
var dir = {};
var paths = "documents/settings/user".split('/')
for (var i = 0; i < paths.length; i++) {
var path = paths[i];
if(i === 0)
dir[path] = {};
//else
//dir[path[i-?]] = {};
}
最佳答案
这实际上可以通过 .reduce()
轻松完成。
var dir = {}
var paths = "documents/settings/user".split('/')
paths.reduce(function(dir, path) {
return dir[path] = {}
}, dir)
console.log(dir)
因为第一个参数始终是最后返回的值(或提供的第一个值),所以我们需要做的就是返回分配给当前路径的对象。由于赋值会导致值被赋值,因此我们可以将其用作 return
语句本身的表达式。
如果需要,您可以防止由于相邻分隔符而导致空路径名。
var dir = {}
var paths = "documents///settings/user".split('/')
paths.reduce(function(dir, path) {
return path ? (dir[path] = {}) : dir
}, dir)
console.log(dir)
关于javascript - 根据文件路径字符串创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38768724/