JS递归遍历路由文件,修改hidden属性
JS递归遍历路由文件,修改hidden属性
根据 titles = [ { title: ‘立即巡店’ },{ title: ‘普通巡检配置’ },{ title: ‘图片巡店任务’ },];
上面是菜单权限,当路由文件匹配到对应的菜单名字,则说明有权限查看,hidden设置为false显示
function updateRoutePermissions(routes, titles) {// 创建一个 Set 用于快速查找 titleconst titleSet = new Set(titles.map(item => item.title));function hasPermission(title) {return titleSet.has(title);}function updateRoutes(routes) {routes.forEach(route => {if (route.children && route.children.length > 0) {// 如果有 children 则递归处理updateRoutes(route.children);// 检查 children 中是否有权限const childrenHasPermission = route.children.some(child => !child.hidden);route.hidden = !childrenHasPermission;} else {// 没有 children 则检查自身权限route.hidden = !hasPermission(route.title);}});}// 开始递归更新updateRoutes(routes);
}// 示例数据
const titles = [{ title: '立即巡店' },{ title: '普通巡检配置' },{ title: '图片巡店任务' },
];const asyncAddRoutes = [{title: "巡店分析",children: [{ title: "巡店统计" }]},{ title: "立即巡店" },{title: "巡店任务",children: [{ title: "图片巡检任务" ,children:[{ title: "图片巡检配置" },{ title: "图片巡店任务" }] },{ title: "普通巡检任务",children:[{ title: "普通巡检配置" },{ title: "普通巡店任务" }] }]},];// 更新路由权限
updateRoutePermissions(asyncAddRoutes, titles);// 打印结果查看
console.log(JSON.stringify(asyncAddRoutes, null, 2));