javascript - 根据文件路径字符串创建对象

标签 javascript

给定路径“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/

相关文章:

javascript - addEventListener 被忽略

javascript - 在深度级别的基础上链接 child 和 parent

javascript - 使用 jQuery 循环遍历容器 div 内的所有 div

javascript - 按钮单击触发下面的文本

javascript - 在 Codeigniter 中使用 javascript multifield 动态选择框

java - 不确定使用 Spring 加载 SELECT 对象的正确方法

javascript - 如何将标签放置在传单图 block 的中心?

javascript - Express js在React客户端中发送文件并下载

asp.net - 需要有关 asp.net 中打印的帮助(需要从打印页面中删除日期时间)

javascript - 在移动设备中进行#选择后,我需要关闭下拉菜单