Сортировка элементов

Массивы и коллекции / Массивы

local numbers = {11, 2, 5, 7, 3}

-- sort works in place: copy first for a new table
local ascending =
  table.move(numbers, 1, #numbers, 1, {})
table.sort(ascending)
-- ascending = 2, 3, 5, 7, 11
local original = table.concat(numbers, ", ")
-- original = 11, 2, 5, 7, 3

-- The comparator says: a goes before b
table.sort(numbers, function(a, b)
  return a > b
end)
-- numbers = 11, 7, 5, 3, 2

-- Pairs: the comparator reads the needed field
local pairs_list = {{"B", 3}, {"A", 2}, {"C", 1}}
table.sort(pairs_list, function(a, b)
  return a[1] < b[1]
end)
local by_letter = pairs_list[1][1]
-- by_letter = A
table.sort(pairs_list, function(a, b)
  return a[2] > b[2]
end)
local by_number = pairs_list[1][1]
-- by_number = B

-- Number strings: as text, then by value
local texts = {"11", "2", "5"}
table.sort(texts)
local as_text = table.concat(texts, ", ")
-- as_text = 11, 2, 5
table.sort(texts, function(a, b)
  return tonumber(a) < tonumber(b)
end)
local as_numbers = table.concat(texts, ", ")
-- as_numbers = 2, 5, 11

print("ascending = "
      .. table.concat(ascending, ", "))
print("original = " .. original)
print("numbers = " .. table.concat(numbers, ", "))
print("by_letter = " .. by_letter)
print("by_number = " .. by_number)
print("as_text = " .. as_text)
print("as_numbers = " .. as_numbers)