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)