You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UI菜单JSON按rank排序异常:两位数rank排序失效问题求助

菜单JSON按Rank排序问题解决方法

问题根源

你当前的代码仅对顶层菜单节点做了排序,完全没处理嵌套的子菜单;而且如果没有递归遍历所有层级的child列表,子菜单的两位数rank(如"10"、"11")会因为没被正确转成整数排序,导致位置异常。

解决方案

需要编写一个递归函数,同时处理顶层菜单和所有嵌套子菜单的排序,确保每个层级的节点都按rank的整数值排序:

def sort_menu_nodes(nodes):
    # 按rank转整数排序当前层级节点
    sorted_nodes = sorted(nodes, key=lambda x: int(x.get('rank', float('inf'))))
    # 递归处理每个节点的子菜单
    for node in sorted_nodes:
        if 'child' in node and isinstance(node['child'], list):
            node['child'] = sort_menu_nodes(node['child'])
    return sorted_nodes

# 应用到你的菜单结构
config['menustructure'] = sort_menu_nodes(config['menustructure'])

说明

  • 函数会先对当前层级的所有节点,将rank字符串转为整数后排序,解决两位数rank的排序问题;
  • 递归遍历每个节点的child列表,对所有嵌套子菜单执行同样的排序逻辑;
  • 用float('inf')作为默认值,确保没有rank的节点会被排到最后。

内容的提问来源于stack exchange,提问作者vineet singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 07:27:06