菜单采用树状结构,数据库记录用户权限对应叶节点。给定菜单信息与用户权限,输出用户可访问的菜单树状数据。
解析:这个问题需要我们实现一个函数,输入是一个菜单数据和用户权限,输出是用户能看到的菜单树形结构数据。我们可以通过递归的方式来实现这个功能。首先,我们需要遍历菜单数据,然后根据用户的权限来判断是否显示当前菜单项。如果用户的权限包含当前菜单项的id,那么就将当前菜单项添加到结果中,并且递归处理子菜单。最后返回结果。
代码如下:
```python
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函数,输出结果。
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。