vue 后台管理系统侧边栏menu数据递归解析

后端反的数据格式   
var menu = {
        1: {
            icon: 'sss',
            entVersion: null,
            label: '采集管理',
            url: '路由的路径',
        },
        '1_1': {
            icon: 'sss',
            entVersion: null,
            label: '采集管理',
            url: '路由的路径',
        },
        '1_2': {
            icon: 'sss',
            entVersion: null,
            label: '采集管理',
            url: '路由的路径',
        },
        2: {
            icon: 'sss',
            entVersion: null,
            label: '市场管理',
            url: '路由的路径',
        },
        '2_1': {
            icon: 'sss',
            entVersion: null,
            label: '市场管理',
            url: '路由的路径',
        },
        '2_2': {
            icon: 'sss',
            entVersion: null,
            label: '市场管理',
            url: '路由的路径',
        },
    }
    var newObj = {}

    //主要是为每个对象添加一个pid的值
    function add(obj) {
        newObj = obj
        for (let key in newObj) {
            newObj[key].pid = key.substring(0, key.lastIndexOf('_'))
        }
    }
    add(menu)


    function menuArr(menuObj, pid) {
        var data = []
        for (let key in menuObj) {
            if (menuObj[key].pid === pid) {
                //不管是一级二级 三级目录都会添加children属性
                let obj = {
                    title: menuObj[key].label,
                    url: menuObj[key].url,
                    children: [],
                }
                //注意这里第二个参数传的是key  不是pid 第一次是1  
                var children = menuArr(menuObj, key.toString()) 
                if (children.length) {
                    obj.children = children
                    obj.icon = 'el_menu' //把第一层的icon修改掉
                } else {
                   
                    obj.icon = 'el_grid'
                }
                data.push(obj)
               
            }
        }
     
        return data
    }


    //调用menuArr
    console.log(newObj)
    let data = menuArr(newObj, '')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值