萌新求助,数组转树结构

varorigin=[
'home/a/2019-04-09/1.txt',
'home/a/2019-04-10/2.txt',
'home/c/2019-04-09/3.txt',
'home2/d/2019-04-09/4.txt',
'home2/e/2019-04-09/5.txt'
];
//输出
varresult=[{
label:'home',
children:[
{
label:'a',
children:[
{
label:'2019-04-09',
children:...
},
{
label:'2019-04-10',
children:...
},
]
},
{
label:'c',
children:...
},
]
},
{
label:'home2',
children:[
{
label:'b',
children:...
},
{
label:'e',
children:...
}
]
}
]
折腾了一晚上实在没想好怎么搞,求大佬们帮助下我,感谢。
森林海
浏览 344回答 2
2回答

函数式编程

origin.map(p=>p.split('/')).reduce((output,path)=>{path.reduce((parent,child)=>{if(parent&&!parent.children){parent.children=[{label:child}]returnparent=parent.children[0]}letcontainer=parent?parent.children:outputparent=container.find(c=>c.label===child)if(!parent){parent={label:child}container.push(parent)}returnparent},null)returnoutput},[])

慕的地6264312

手机答题,姑且说下思路。一个切入点是字符串数据结构。字符串可以通过索引访问字符,比如varstrDemo='mw5209';,那么strDemo[0]就是字符'm',以此类推,strDemo[3]就是字符'2'。同时,字符串也会有length属性,有总长可以索引访问那就构建for循环呗,循环里放个变量,每次取一个字符,不是斜线就存到变量里,是斜线就把变量里的东西拿出来构建一级子树,同时变量清空继续,直到遍历完成,最后别忘记把变量里的东西拿出来收个尾就行了。另一个切入点,String标准库有.split()方法,你把字符串视为以斜线分割的数组,有数组了那把成员挨个拿出来构建子树呗。还有个点是正则,不过这个需求不强求吧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript