嵌套结构数据(树状结构)变成扁平结构带有子元素(children)

1.嵌套结构

 2.扁平结构

3.代码展示

 3.1.定义嵌套结构的数据array

        var array = [
            {
                label: '一级 1',
                children: [{
                    label: '二级 1-1',
                    children: [{
                        label: '三级 1-1-1'
                    }]
                }]
            },
            {
                label: '一级 2',
                children: [{
                    label: '二级 2-1',
                    children: [{
                        label: '三级 2-1-1'
                    },{
                        label: '三级 2-1-2'
                    }]
                }, {
                    label: '二级 2-2',
                    children: [{
                        label: '三级 2-2-1'
                    }]
                }]
            },
            {
                label: '一级 3',
                children: [{
                    label: '二级 3-1',
                    children: {
                        label: '三级 3-1-1'
                    }
                }, {
                    label: '二级 3-2',
                    children: {
                        label: '三级 3-2-1'
                    }
                }]
            },
            {
                label: '一级 4',
            }
        ]

3.2.js部分

        flatten函数为一个递归函数,即,函数中引用该函数。

        function flatten(array){
            return [].concat(...array.map(item => {
                // console.log(item);
                if(item.children && item.children.length > 0){
                    // 有children元素,且为数组形式,数组长度大于等于1(例,二级 2-1)
                    return [].concat(item, ...flatten(item.children))
                }else if(item.children){
                    // 有children元素,且为对象形式(例,二级 3-1)
                    return [].concat(item, item.children)
                }else{
                    // 没有children元素(例,一级 4)
                    return item
                }
                
            }))
        }

3.3.打印出效果

  var newArray = flatten(array);
  console.log(newArray);

原文地址:https://www.cnblogs.com/pwindy/p/15792605.html