按降序(从最高到最低)排序Lua表

我尝试了各种方法来尝试让这个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 i,v in ipairs(DTable)" - 请尽快回复!

点赞
用户2616735
用户2616735

table.sort的比较器就像 < 一样——它用它来排列列表中的值,使最小的值排在第一位,最大的值排在最后。看起来像这样:

first < second < third < .... < last

如果你想反转这个顺序,你应该给它一个“ >操作”:

first > second > third > .... >last

-- 按对中的第二个值递减排序`DTable`,  
table.sort(DTable, function(a, b) return a[2] > b[2] end)

在你的问题中,你说像 q 这样的值是数字。如果它们实际上是字符串但你想将它们作为数字进行排序,你应该使用 tonumber 来进行转换:

-- 注意,跟踪“SC”并不是必要的。  
-- 这只是DTable的长度,table.insert默认插入到那里。  
table.insert(DTable, {e, tonumber(q)}))
2018-06-28 05:02:12