鍍金池/ 問答/HTML/ 如何將分叉樹結(jié)構(gòu)數(shù)據(jù)平鋪

如何將分叉樹結(jié)構(gòu)數(shù)據(jù)平鋪

題目

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'
                    }
                ]
            }
        ]
    }
]

需求
返回每一級的數(shù)組

[
    ['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']
]
回答
編輯回答
冷眸

代碼當(dāng)然是一步一步來了,先遍歷打印,然后輸出符合標(biāo)準(zhǔn)。最后順序一致。

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

2017年8月3日 00:27