我已经尝试了所有方法来尝试将此lua表从高到低排序。我看了遍及整个网络的其他stackoverflow线程,但是它不起作用。
local DTable = {}
local SC = 0
for e,q in pairs(LastATP) do
local CT = {e,q}
SC = SC + 1
table.insert(DTable, SC, CT)
end
table.sort(DTable, function(a, b) return a[2] < b[2] end)
“ E”是随机密钥,例如dxh3qw89fh39fh-而q是数字。请帮忙。我已经尝试了一切。当我尝试遍历排序的表时,我也使用“ for ipairs(DTable)中的i,v”-请尽快回复!
答案 0 :(得分:1)
table.sort
的比较器的作用类似于<
-它使用它来排列列表中的值,以便最小的是第一个,最大的是最后一个。看起来像
第一<第二<第三<.... <最后
如果您想颠倒该顺序,则应该给它一个“ >
操作”:
第一>第二>第三> ....>最后
-- Sort `DTable` by the second value in the pair, decreasing
table.sort(DTable, function(a, b) return a[2] > b[2] end)
在您的问题中,您说q
之类的值是数字。如果它们实际上是字符串,但您希望将它们按数字排序,则应使用tonumber
进行转换:
-- Note that keeping track of "SC" is not necessary, it is just the
-- length of DTable, which is where table.insert inserts by default
table.insert(DTable, {e, tonumber(q)}))