• js 多维数组转一维数组(根据字段展示)


    const treeData = [
        {
            title: '0-0',
            key: '0-0',
            children: [
                {
                    title: '0-0-0',
                    key: '0-0-0',
                    children: [
                        { title: '0-0-0-0', key: '0-0-0-0' },
                        { title: '0-0-0-1', key: '0-0-0-1' },
                        { title: '0-0-0-2', key: '0-0-0-2' },
                    ],
                },
                {
                    title: '0-0-1',
                    key: '0-0-1',
                    children: [
                        { title: '0-0-1-0', key: '0-0-1-0' },
                        { title: '0-0-1-1', key: '0-0-1-1' },
                        { title: '0-0-1-2', key: '0-0-1-2' },
                    ],
                },
                {
                    title: '0-0-2',
                    key: '0-0-2',
                },
            ],
        },
        {
            title: '0-1',
            key: '0-1',
            children: [
                { title: '0-1-0-0', key: '0-1-0-0' },
                { title: '0-1-0-1', key: '0-1-0-1' },
                { title: '0-1-0-2', key: '0-1-0-2' },
            ],
        },
        {
            title: '0-2',
            key: '0-2',
        },
    ];


      

     function flatten(data, keys, level = 0,isfold = false) {
                return data.reduce((arr, x) => [
                    ...arr,
                    keys.reduce((o, k) => (o[k] = x[k], o), { level,isfold:x.children ? true:false}),
                    ...flatten(x.children || [], keys, level + 1,isfold),
                ], [])
            }
            console.log(flatten(treeData,['title','key']))
    
    
    // 输出
    0: {level: 0, isfold: true, title: "0-0", key: "0-0"}
    1: {level: 1, isfold: true, title: "0-0-0", key: "0-0-0"}
    2: {level: 2, isfold: false, title: "0-0-0-0", key: "0-0-0-0"}
    3: {level: 2, isfold: false, title: "0-0-0-1", key: "0-0-0-1"}
    4: {level: 2, isfold: false, title: "0-0-0-2", key: "0-0-0-2"}
    5: {level: 1, isfold: true, title: "0-0-1", key: "0-0-1"}
    6: {level: 2, isfold: false, title: "0-0-1-0", key: "0-0-1-0"}
    7: {level: 2, isfold: false, title: "0-0-1-1", key: "0-0-1-1"}
    8: {level: 2, isfold: false, title: "0-0-1-2", key: "0-0-1-2"}
    9: {level: 1, isfold: false, title: "0-0-2", key: "0-0-2"}
    10: {level: 0, isfold: true, title: "0-1", key: "0-1"}
    11: {level: 1, isfold: false, title: "0-1-0-0", key: "0-1-0-0"}
    12: {level: 1, isfold: false, title: "0-1-0-1", key: "0-1-0-1"}
    13: {level: 1, isfold: false, title: "0-1-0-2", key: "0-1-0-2"}
    14: {level: 0, isfold: false, title: "0-2", key: "0-2"}
    

      

  • 相关阅读:
    Python UDP Server Client
    Django点滴(五)建模
    机房收费系统中的数据库操作
    一个普通的工科应届生
    Zebra命令模式分析(二)[补]
    php 备份mysql数据库(joomla数据库可直接使用,其他数据库稍作修改即可)
    dalvik直接跑hello world并用jdb调试
    动态规划小结(1)最大子段和
    struts返回对象json格式数据
    有关public接口和友元类的讨论
  • 原文地址:https://www.cnblogs.com/qq735675958/p/13274687.html
Copyright © 2020-2023  润新知