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

时间:2018-06-28 04:52:55

标签: lua lua-table

我已经尝试了所有方法来尝试将此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”-请尽快回复!

1 个答案:

答案 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)}))