解析嵌套数据 , 递归要怎么写

类似这种

const demo = [{
        path: '/login',
        name: 'login',
        meta: {
            title: 'Login - 登录',
            hideInMenu: true
        }
    },
    {
        path: '/',
        name: '_home',
        redirect: '/home',
        meta: {
            hideInMenu: true,
            notCache: true
        },
        children: [{
            path: '/home',
            name: 'home',
            meta: {
                hideInMenu: true,
                title: '首页',
                notCache: true,
                icon: 'md-home'
            }
        }]
    },
    {
        path: '/system',
        name: 'system',
        meta: {
            icon: 'md-menu',
            title: '系统管理'
        },
        children: [{
                path: 'user',
                name: 'user',
                meta: {
                    icon: 'ios-people-outline',
                    title: '用户管理'
                }
            },
            {
                path: 'menus',
                name: 'menus',
                meta: {
                    icon: 'md-funnel',
                    title: '菜单管理'
                }
            },
            {
                path: 'character',
                name: 'character',
                meta: {
                    icon: 'md-funnel',
                    title: '角色管理'
                }
            }
        ]
    },
    {
        path: '/401',
        name: 'error_401',
        meta: {
            hideInMenu: true
        }
    },
    {
        path: '/500',
        name: 'error_500',
        meta: {
            hideInMenu: true
        }
    },
    {
        path: '*',
        name: 'error_404',
        meta: {
            hideInMenu: true
        }
    }
]

转换为这种

const demo1=[
    {
        title:'系统管理',
        children:[
            {
                title:'用户管理'
            },
            {
                title:'菜单管理'
            },
            {
                title:'角色管理'
            }
        ]
    }
]

用for可以实现 不知道用递归怎么写

阅读 1.5k
2 个回答
function convertMenueTree(arr) {
    let resultArr = [];   
    arr.map((item) => {
        if(item.children) { //有嵌套时的情况  去调用递归
            resultArr.push({title:item.meta.title,children:convertMenueTree(item.children)})
        } else { //单层 递归时被调用
            resultArr.push({title:item.meta.title})
        }
    })    
    return resultArr;
}

convertMenueTree(demo)

以上假设是你每层都有meta:{title:***}
如果没有,可以在

 else {
         if(该层没有meta对象){....额外处理没有meta对象情况}
        resultArr.push({title:item.meta.title})
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题