aiaiask.com©

开花即结果 提问即答案

菜单以树形结构呈现,数据库记录用户权限对应叶子节点。给定菜单与权限,输出可见菜单树形数据
原始问题:

菜单以树形结构呈现,数据库记录用户权限对应叶子节点。给定菜单与权限,输出可见菜单树形数据

解析:
这个问题需要我们实现一个功能,输入是一个菜单数据和用户权限的列表,输出是根据用户权限过滤后的菜单树形结构。

步骤如下:

  1. 定义一个函数,输入为菜单数据和用户权限列表,输出为过滤后的菜单树形结构。
  2. 在函数中,首先将菜单数据转换为字典格式,方便后续操作。
  3. 然后遍历菜单数据的每一个节点,判断该节点是否在用户权限列表中,如果在,则保留该节点及其子节点;如果不在,则删除该节点及其子节点。
  4. 最后返回过滤后的菜单树形结构。

代码如下:(假设菜单数据和用户权限都是以json格式输入)

def filter_menu(menu_data, user_permissions):
    # 将菜单数据转换为字典格式
    menu_dict = json.loads(menu_data)
    
    # 定义递归函数,用于遍历和过滤菜单数据
    def traverse_and_filter(node):
        # 如果节点在用户权限列表中,或者没有子节点,则保留该节点及其子节点
        if node['id'] in user_permissions or not node['children']:
            return [node] + traverse_and_filter(node['children']) if node['children'] else []
        else:
            # 否则,删除该节点及其子节点
            return []
    
    # 调用递归函数,获取过滤后的菜单树形结构
    filtered_menu = traverse_and_filter(menu_dict)
    
    # 将过滤后的菜单树形结构转换为json格式并返回
    return json.dumps(filtered_menu)

注意:这个函数只能处理一级菜单和二级菜单的情况,如果菜单有三级或更多级,需要对函数进行相应的修改。

菜单以树形结构呈现,数据库记录用户权限对应叶子节点。给定菜单与权限,输出可见菜单树形数据
https://www.aiaiask.com/ask/46840.html
AI / 模型DeepSeek
时间 / DATESeptember 10, 2023, 8:26 PM
语言zh-CN
IP / 区域黑龙江 哈尔滨