[javascript] js使用filter递归过滤树形结构数组

tech2025-09-12  25

彩蛋:后台管理系统一站式平台模板

vue-admin-wonderful,一套为开发者快速开发准备的基于 vue2.x 越看越精彩的后台管理系统一站式平台模板。基于element ui 2.14.0

// 菜单列表 const menuList = [{ name: '系统管理', code: 'system_manage', children: [{ name: '用户管理', code: 'user_manage', children: [{ name: '添加用户', code: 'add_user' }, { name: '编辑用户', code: 'edit_user' }, { name: '删除用户', code: 'del_user' }] }, { name: '角色管理', code: 'role_manage', children: [{ name: '添加角色', code: 'add_role' }] }] }, { name: '业务管理', code: 'bus_manage', children: [{ name: '流程管理', code: 'process_manage' }] }, { name: '订单管理', code: 'order_manage' }] // 权限列表 const myMenuCode = ['system_manage', 'user_manage', 'add_user', 'order_manage'] const filterMenu = (menuList, menuCode) => { return menuList.filter(item => { return menuCode.indexOf(item.code) > -1 }).map(item => { item = Object.assign({}, item) if (item.children) { item.children = filterMenu(item.children, menuCode) } return item }) } // 过滤后的菜单 const myMenu = filterMenu(menuList, myMenuCode) console.log(myMenu)
最新回复(0)