zoukankan      html  css  js  c++  java
  • 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"}
    

      

  • 相关阅读:
    Django重新构造User模型
    在docker中添加mysql在通过远程机器的访问
    php基础笔记
    mysql基础笔记整理
    redis的配置安装与使用
    c++实现对两个有序链表的连接
    java的网络编程(TCP)
    无心制作
    nacos配置服务
    声明式远程调用OpenFeign(微服务调用微服务)
  • 原文地址:https://www.cnblogs.com/qq735675958/p/13274687.html
Copyright © 2011-2022 走看看