Javascript 如何将代码嵌套树结构填充到obj中?

Javascript 如何将代码嵌套树结构填充到obj中?,javascript,arrays,json,object,tree,Javascript,Arrays,Json,Object,Tree,我想创建一个类似树的嵌套结构作为obj(后来的JSON),但我一直在努力正确地做到这一点 我想将其转换为: root/app/index.html 为此: { type: 'box', name: 'root' children: { type: 'box', name: 'app', children: { type: 'item', name: 'index.html' } } } 我怎样才能通过代码做到这一点?有什

我想创建一个类似树的嵌套结构作为obj(后来的JSON),但我一直在努力正确地做到这一点

我想将其转换为:

root/app/index.html
为此:

{
  type: 'box',
  name: 'root'
  children: {
    type: 'box',
    name: 'app',
    children: {
      type: 'item',
      name: 'index.html'
    }
  }
}

我怎样才能通过代码做到这一点?有什么建议吗

您可以创建一个函数,该函数接受字符串并将其拆分为数组,然后可以在该数组上使用
reduce
方法来构建嵌套结构

conststring='root/app/index.html';
const parse=str=>{
常量结果={}
str.split('/').reduce((r,name,i,a)=>{
赋值(r,{name,type:a[i+1]?'box':'item'})
返回一个[i+1]?(r.children={}):r
},结果)
返回结果;
}

log(解析(字符串))
您还可以使用递归方法:

let str='root/app/index.html';
console.log(convertToNestedTree(str))
函数convertToNestedTree(str){
让members=str.split('/');
如果(members.length==1){
返回({type:'item',name:str});
}
返回({type:'box',name:members[0],
子级:convertToNestedTree(members.slice(1.join('/'))
});

}
您试过什么吗?一个好的起点是分割路径,然后可以将生成的数组缩减为一个对象。看一看和函数。是的,尽量不要让我的问题过多,所以不要放这么简单的东西,我的问题开始了,然后我尝试做push():(感谢,但我的嵌入javascript不支持赋值:(但我得到了你的精彩,通过push和get-into-trobles进行了尝试,然后用最后一个更新所有名称,但这一个工作非常完美。