Lua遍历表,按值

时间:2016-11-06 20:59:37

标签: sorting lua iterator

我的表t包含许多条目,例如t["name1"] = 42t["name2"] = 123...

我想按值编号的降序迭代表。如何实现这一目标?我找到了创建迭代器函数的方法,这些函数通过表的进行排序,但无法检查具有有序值的条目。

1 个答案:

答案 0 :(得分: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