后端反的数据格式
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, '')
vue 后台管理系统侧边栏menu数据递归解析
最新推荐文章于 2024-08-11 17:33:21 发布