我有下一个结构
self.modules = {
["Announcements"] = {
priority = 0,
-- Tons of other attributes
},
["Healthbar"] = {
priority = 40,
-- Tons of other attributes
},
["Powerbar"] = {
priority = 35,
-- Tons of other attributes
},
}
我需要按优先级 DESC 对该表进行排序,其他值无关紧要。例如,首先是 Healthbar,然后是 Powerbar,然后是所有其他人。
// 编辑。
必须保留密钥。
// 编辑 #2
找到了解决办法,谢谢大家。
local function pairsByPriority(t)
local registry = {}
for k, v in pairs(t) do
tinsert(registry, {k, v.priority})
end
tsort(registry, function(a, b) return a[2] > b[2] end)
local i = 0
local iter = function()
i = i + 1
if (registry[i] ~= nil) then
return registry[i][1], t[registry[i][1]]
end
return nil
end
return iter
end