【问题标题】:Lua iterate over table sorted by valuesLua遍历按值排序的表
【发布时间】:2016-11-07 05:16:30
【问题描述】:

我有一张表 t,其中包含许多条目,例如 t["name1"] = 42t["name2"] = 123...

我想按值数字的降序遍历表。如何实现?我找到了创建迭代器函数的方法,这些函数对表的 keys 进行排序,但无法遍历具有排序值的条目。

【问题讨论】:

    标签: sorting lua iterator


    【解决方案1】:
    function pairs_order_by_values_desc(tab)
       local keys = {}
       for k in pairs(tab) do
          keys[#keys + 1] = k
       end
       table.sort(keys, function(a, b) return tab[a] > tab[b] end)
       local j = 0
       return
          function()
             j = j + 1
             local k = keys[j]
             if k ~= nil then
                return k, tab[k]
             end
          end
    end
    
    local t = {}
    t.name1 = 42
    t.name2 = 123
    t.name3 = 99
    
    for k, v in pairs_order_by_values_desc(t) do
       print(k, v)
    end
    

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 2010-11-29
      • 2014-04-07
      相关资源
      最近更新 更多