Порядок таблицы Lua в порядке убывания (от самого высокого до самого низкого) - PullRequest
0 голосов
/ 28 июня 2018

Я перепробовал все, чтобы попытаться упорядочить этот стол 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)» - ответы скоро, пожалуйста!

1 Ответ

0 голосов
/ 28 июня 2018
Компаратор

table.sort действует как < - он использует его для упорядочения значений в списке так, чтобы наименьшее было первым, а наибольшее последним. Это выглядит как

первый <второй <третий <.... <последний </p>

Если вы хотите изменить этот порядок, вы должны вместо него указать «> операция»:

первый> второй> третий> ....> последний

-- 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)}))
...