aiaiask.com©

开花即结果 提问即答案

菜单采用树状结构,数据库记录用户权限对应叶节点。给定菜单信息与用户权限,输出用户可访问的菜单树状数据。
原始问题:

菜单采用树状结构,数据库记录用户权限对应叶节点。给定菜单信息与用户权限,输出用户可访问的菜单树状数据。

解析:这个问题需要我们实现一个函数,输入是一个菜单数据和用户权限,输出是用户能看到的菜单树形结构数据。我们可以通过递归的方式来实现这个功能。首先,我们需要遍历菜单数据,然后根据用户的权限来判断是否显示当前菜单项。如果用户的权限包含当前菜单项的id,那么就将当前菜单项添加到结果中,并且递归处理子菜单。最后返回结果。

代码如下:

def filter_menu(menu, user_permissions):
    result = []
    for item in menu:
        if item['id'] in user_permissions:
            children = filter_menu(item['children'], user_permissions)
            if children:
                item['children'] = children
            result.append(item)
    return result

menu = [
    {"id":"0","children":[{"id":"1"},{"id":"2"},{"id":"3"}]},
    {"id":"4","children":[{"id":"5"},{"id":"6"},{"id":"7"}]}
]
user_permissions = ['1', '2']
print(filter_menu(menu, user_permissions))

这段代码首先定义了一个函数filter_menu,这个函数接受两个参数,一个是菜单数据,一个是用户权限。然后这个函数遍历菜单数据,对于每一个菜单项,如果它的id在用户权限中,那么就将它添加到结果中。然后对这个菜单项的子菜单进行递归处理。最后返回结果。

然后我们定义了一个菜单数据和一个用户权限,调用filter_menu函数,输出结果。

菜单采用树状结构,数据库记录用户权限对应叶节点。给定菜单信息与用户权限,输出用户可访问的菜单树状数据。
https://www.aiaiask.com/ask/46847.html
AI / 模型DeepSeek
时间 / DATESeptember 10, 2023, 8:50 PM
语言zh-CN
IP / 区域黑龙江 哈尔滨