Порядок таблицы Lua в порядке убывания (от самого высокого до самого низкого)
Я перепробовал все, чтобы попытаться упорядочить этот стол lua от наивысшего к низшему. Я смотрел на другие потоки stackru, по всей сети, и это не работает.
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 - это число. Пожалуйста помоги. Я перепробовал все. Когда я пытаюсь перебрать отсортированную таблицу, я также использую "для i, v в ipairs(DTable)" - ответы скоро, пожалуйста!
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)}))