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 回答
UYOU
TA贡献1878条经验 获得超4个赞
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},[])
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
手机答题,姑且说下思路。一个切入点是字符串数据结构。字符串可以通过索引访问字符,比如varstrDemo='mw5209';,那么strDemo[0]就是字符'm',以此类推,strDemo[3]就是字符'2'。同时,字符串也会有length属性,有总长可以索引访问那就构建for循环呗,循环里放个变量,每次取一个字符,不是斜线就存到变量里,是斜线就把变量里的东西拿出来构建一级子树,同时变量清空继续,直到遍历完成,最后别忘记把变量里的东西拿出来收个尾就行了。另一个切入点,String标准库有.split()方法,你把字符串视为以斜线分割的数组,有数组了那把成员挨个拿出来构建子树呗。还有个点是正则,不过这个需求不强求吧。
添加回答
举报
0/150
提交
取消