// 这是个树节点,可能有很深
const treeData = [{
label: '一级导航',
path: 'path-1'
},{
label: '二级导航',
path: 'path-2',
children: [{
label: '二级导航1',
path: 'path-2-1'
},{
label: '二级导航2',
path: 'path-2-2'
}]
}]
// 这个本来也是树节点,我给拍平了
const permission = [{
label: '啦啦啦1',
route: 'path-1'
},{
label: '啦啦啦2',
route: 'path-2'
},{
label: '啦啦啦3',
route: 'path-3'
},{
label: '啦啦啦4',
route: 'path-4'
},{
label: '啦啦啦5',
route: 'path-5',
children: [{
label: '啦啦啦5-1',
route: 'path-5-1',
}]
}]
// 最终处理后的结果应该是这样的
// 用treeData的label跟permission的path比
const result = [{
label: '一级导航',
path: 'path-1',
meta: {
label: '啦啦啦1'
}
},{
label: '二级导航',
path: 'path-2',
meta: {
label: '啦啦啦2'
}
children: []
},{
label: '三级导航',
path: 'path-3',
meta: {
label: '啦啦啦3'
},
component: '如果之前的treeData上没有这个节点,需要加一个component的value,值先随便写'
},{
label: '四级导航',
path: 'path-4',
meta: {
label: '啦啦啦4'
},
component: '如果之前的treeData上没有这个节点,需要加一个component的value,值先随便写'
},{
label: '五级导航',
path: 'path-5',
meta: {
label: '啦啦啦5'
},
component: '如果之前的treeData上没有这个节点,需要加一个component的value,值先随便写'
children: [{
label: '五级导航1',
path: 'path-5-1',
meta: {
label: '啦啦啦5-1'
},
component: '如果之前的treeData上没有这个节点,需要加一个component的value,值先随便写'
}]
}]
背景:路由地址是后台管理的,路由是后台添加的(如果添加本地没有的路由,就用统一的默认模板)treeData是前端vue里的路由,permission是后台返回的路由,然后需要两个对比
1,如果treeData里有,permission里没有的,就在treeData的meta添加hidden:true或者删除掉
2,如果treeData里没有,permistion里有,则把permistion里的对象塞到treeData里
3,如果treeData里path===permission的route,则给treeData的当前对象添加meta对象,并且把permission的name赋值给meta里的label
将数组扁平化后去重