当前位置: 首页 > news >正文

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));

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 三、【Python】入门 - 第一个python程序
  • 微信小程序开发:项目程序代码构成
  • 【机器学习】FlyFlowerSong【人工智能】资源指南
  • 服务攻防-框架安全(漏洞复现)
  • 2024年7月23日(samba DNS)
  • MySQL8的备份方案——全量(完全)备份(CentOS)
  • 操作系统——笔记(1)
  • 驱动框架——CMSIS第一部分 RTE驱动框架介绍
  • 类和对象(四)
  • AV1技术学习:Quantization
  • centos系统mysql主从复制(一主一从)
  • 全国区块链职业技能大赛第九套区块链产品需求分析与方案设计
  • 腾讯云开发者《中国数据库前世今生》有奖创作季
  • Linux grep技巧 提取log中的json数据
  • MySQL第四次作业
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • Bootstrap JS插件Alert源码分析
  • C++11: atomic 头文件
  • CSS实用技巧干货
  • CSS相对定位
  • IndexedDB
  • java正则表式的使用
  • PAT A1092
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue2.0 实现互斥
  • 基于webpack 的 vue 多页架构
  • 如何实现 font-size 的响应式
  • 设计模式 开闭原则
  • 微信公众号开发小记——5.python微信红包
  • 优化 Vue 项目编译文件大小
  • 自动记录MySQL慢查询快照脚本
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​secrets --- 生成管理密码的安全随机数​
  • ​ubuntu下安装kvm虚拟机
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #php的pecl工具#
  • #QT(智能家居界面-界面切换)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)(1.11) SiK Radio v2(一)
  • (1)STL算法之遍历容器
  • (23)Linux的软硬连接
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (一一四)第九章编程练习
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bashrc在哪里,alias妙用
  • .NET 8.0 中有哪些新的变化?
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET CORE Aws S3 使用