您好,匿名用户

萌新求助,数组转树结构

0 投票
       var origin = [
            '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'
        ];
        
       //输出
       var result = [{
            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:...
                  }
            ]
        }

        ] 
            
            
        折腾了一晚上 实在没想好怎么搞, 求大佬们帮助下我,感谢。
        
用户头像 提问 5月16日 @ Viktor 中士 (1,270 威望)
分享到:

1个回答

0 投票
 
最佳答案
origin.map(p => p.split('/')).reduce((output, path) => {
  path.reduce((parent, child) => {
    if (parent && !parent.children) {
      parent.children = [{ label: child }]
      return parent = parent.children[0]
    }
    let container = parent ? parent.children : output
    parent = container.find(c => c.label === child)
    if (!parent) {
      parent = { label: child }
      container.push(parent)
    }
    return parent
  }, null)
  return output
}, [])
用户头像 回复 5月16日 @ Maokai 中士 (1,427 威望)
选中 5月12日 @Viktor
提一个问题:

相关问题

0 投票
1 回复 198 阅读
0 投票
1 回复 169 阅读
0 投票
1 回复 7 阅读
用户头像 提问 5月10日 @ Lux 中士 (1,397 威望)
0 投票
1 回复 98 阅读
用户头像 提问 2017年 5月6日 @ Yasuo 上士 (1,556 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...