如何将分叉树结构数据平铺

题目

var tree = [
      {
        name:'a',
        children:[
            {
                name:'aa',
                children:[
                    {
                        name:'aaa'
                    },
                    {
                        name:'aaa1'
                    },
                    {
                        name:'aaa2'
                    },
                    {
                        name:'aaa3'
                    }
                ]
            },
            {
                name:'aa1',
                children:[
                    {
                        name:'aaaa1'
                    },
                    {
                        name:'aaaa2'
                    }
                ]
            }
        ]
    },
    {
        name:'b',
        children:[
            {
                name:'bb',
                children:[
                    {
                        name:'bbb',
                        children:[
                            {
                                name:'bbbb1'
                            }
                        ]
                    },
                    {
                        name:'bbb1'
                    },
                    {
                        name:'bbb2'
                    },
                    {
                        name:'bbb3'
                    }
                ]
            }
        ]
    }
]

需求
返回每一级的数组

[
    ['a'],
    ['b'],
    ['a','aa'],
    ['a','aa1'],
    ['a','aa','aaa'],
    ['a','aa','aaa1'],
    ['a','aa','aaa2'],
    ['a','aa','aaa3'],
    ['a','aa1','aaaa1'],
    ['a','aa1','aaaa2'],
    ['b','bb'],
    ['b','bb','bbb'],
    ['b','bb','bbb1'],
    ['b','bb','bbb2'],
    ['b','bb','bbb3'],
    ['b','bb','bbb','bbbb1']
]
阅读 2.3k
1 个回答

代码当然是一步一步来了,先遍历打印,然后输出符合标准。最后顺序一致。

var log = (_tree,_parent = []) => {
    _tree.forEach((item)=>{
        console.log(_parent.concat(item.name));
    });
    _tree.forEach((item)=>{
        item.children && log(item.children, _parent.concat(item.name))
    })
}
log(tree)

clipboard.png

clipboard.png

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题