zoukankan      html  css  js  c++  java
  • 嵌套结构数据(树状结构)变成扁平结构带有子元素(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);

  • 相关阅读:
    高并发 内核优化
    mysql 读写分离
    Jmeter使用入门
    Jenkins+Jmeter+Ant接口持续集成
    Android客户端稳定性测试——Monkey
    SVN客户端项目递归删除.svn目录
    Windows 下 php5+apache+mysql5 手工搭建笔记
    熟悉常用的Linux操作
    C语言文法
    词法分析实验报告
  • 原文地址:https://www.cnblogs.com/pwindy/p/15792605.html
Copyright © 2011-2022 走看看