【问题标题】:Sorting lua tables by arbitrary values按任意值对 lua 表进行排序
【发布时间】:2023-03-23 14:05:01
【问题描述】:

我有一个结构如下的表:

table = {
    [1] = {"something", "high"}
    [2] = {"something else", "low"}
    [3] = {"something further", "medium"},
    [4] = {"yet more something", "medium"},
}

我想要做的是使用委托函数使用 table.sort() 对该表进行排序,以便优先级变量(高、低、中等)对列表进行排序,列表中跟随高,其次是中,然后是低。我该怎么做呢?

【问题讨论】:

    标签: sorting lua lua-table


    【解决方案1】:

    您似乎知道table.sort 的工作原理,那么您卡在哪里了? 只需创建一个查找表,将优先级名称转换为整数并进行比较:

    priorities = {high = 2, medium = 1, low = 0}
    table.sort(t, function(e1, e2)
        return priorities[e1[2]] > priorities[e2[2]]
    end)
    

    【讨论】:

      【解决方案2】:
      table.sort(t, 
        function(e1, e2)
          return e1[2]:sub(-1) < e2[2]:sub(-1)
        end
      )
      

      【讨论】:

      • 有趣的想法,但相当晦涩难懂,你不觉得吗?
      • 我只是想补充一点注意事项,因为这是一个非常紧凑的解决方案,但我认为不应该进入生产代码;)
      • @Ephemeralis - 请不要将我的解决方案嵌入到生产代码中:-)
      猜你喜欢
      • 2020-02-08
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2020-10-17
      • 2014-03-20
      • 2011-10-07
      • 1970-01-01
      • 2011-01-13
      相关资源
      最近更新 更多