为了账号安全,请及时绑定邮箱和手机立即绑定

萌新求助,数组转树结构

萌新求助,数组转树结构

森林海 2019-04-27 22:14:43
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:...}]}]折腾了一晚上实在没想好怎么搞,求大佬们帮助下我,感谢。
查看完整描述

2 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

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:output
parent=container.find(c=>c.label===child)
if(!parent){
parent={label:child}
container.push(parent)
}
returnparent
},null)
returnoutput
},[])
                            
查看完整回答
反对 回复 2019-04-27
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信