【发布时间】:2016-11-07 05:16:30
【问题描述】:
我有一张表 t,其中包含许多条目,例如 t["name1"] = 42、t["name2"] = 123、...
我想按值数字的降序遍历表。如何实现?我找到了创建迭代器函数的方法,这些函数对表的 keys 进行排序,但无法遍历具有排序值的条目。
【问题讨论】:
我有一张表 t,其中包含许多条目,例如 t["name1"] = 42、t["name2"] = 123、...
我想按值数字的降序遍历表。如何实现?我找到了创建迭代器函数的方法,这些函数对表的 keys 进行排序,但无法遍历具有排序值的条目。
【问题讨论】:
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
【讨论】: