Как мне отсортировать многомерную таблицу в Lua? - PullRequest
4 голосов
/ 22 октября 2019

У меня есть таблица, состоящая в основном из следующего:

myTable = {{1, 6.345}, {2, 3.678}, {3, 4.890}}

, и я хотел бы отсортировать таблицу по десятичным значениям. Поэтому я хотел бы, чтобы вывод был:

{{2, 3.678}, {3, 4.890}, {1, 6.345}}

Если возможно, я бы хотел использовать функцию table.sort (). Заранее благодарю за помощь: -)

1 Ответ

4 голосов
/ 22 октября 2019

Учитывая, что ваша таблица является последовательностью, вы можете использовать table.sort напрямую. Эта функция принимает предикат сравнения в качестве второго аргумента, который предписывает логику сравнения:

require 'table'

myTable = {{1, 6.345}, {2, 3.678}, {3, 4.890}}

table.sort(myTable, function(lhs, rhs) return lhs[2] < rhs[2] end)

Печать таблицы, например, как for _, v in ipairs(myTable) do print(v[1], v[2]) end, затем отображение желаемого порядка:

2       3.678
3       4.89
1       6.345

Они указывают здесь не размер таблицы для сортировки, а тот факт, что это последовательность, то есть упорядоченная.

...