Table.sort (Lua): различия между версиями
Перейти к навигации
Перейти к поиску
Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == '''table.sort''' - сортирует массив в заданном порядке. == Синтаксис == Привязка к окн...») |
Tatikoma (обсуждение | вклад) |
||
| Строка 4: | Строка 4: | ||
== Синтаксис == | == Синтаксис == | ||
Привязка к окну: Нет. | Привязка к окну: Нет. | ||
| − | + | <br>Работа со свернутым окном: Да. | |
| − | + | <br>Все параметры заключаются в скобки и разделяются запятыми. | |
| − | table.sort ( | + | table.sort (<array> [, comp]) |
Где: | Где: | ||
| − | + | <br>'''<array>''' - массив. | |
| − | + | <br>'''[, comp]''' - необязательный параметр. Если параметр задан, то он должен быть функцией, которая для двух получаемых параметров возвращает true если первый из них меньше второго. | |
== Примеры == | == Примеры == | ||
| Строка 57: | Строка 57: | ||
-- функция сортировки по первому элементу, следующие не учитываются | -- функция сортировки по первому элементу, следующие не учитываются | ||
function mySort(a,b) | function mySort(a,b) | ||
| − | if a[1] | + | if a[1] < b [1] then |
return true | return true | ||
end | end | ||
| Строка 83: | Строка 83: | ||
-- функция сортировки по первом двум элементам, если первые равны, то сравниваются вторые | -- функция сортировки по первом двум элементам, если первые равны, то сравниваются вторые | ||
function mySort(a,b) | function mySort(a,b) | ||
| − | if a[1] | + | if a[1] < b [1] then |
return true | return true | ||
else | else | ||
| − | if a[1] == b [1] and a[2] | + | if a[1] == b [1] and a[2] < b [2] then -- если первые элементы равны, сравнить вторые |
return true | return true | ||
end | end | ||
| Строка 119: | Строка 119: | ||
log (table.concat(arr[i], ",")) | log (table.concat(arr[i], ",")) | ||
end | end | ||
| − | table.sort(arr, function (a,b) return (a[3] | + | table.sort(arr, function (a,b) return (a[3] < b[3]) end) -- сортировка по 3му элементу |
log ("Массив после сортировки:") | log ("Массив после сортировки:") | ||
for i = 1, #arr do | for i = 1, #arr do | ||
| Строка 128: | Строка 128: | ||
[[table.insert (Lua)]] | [[table.insert (Lua)]] | ||
| − | + | <br>[[table.remove (Lua)]] | |
| − | + | <br>[[table.concat (Lua)]] | |
| − | + | <br>[[unpack (Lua)]] | |
| − | + | <br>[[table.maxn (Lua)]] | |
Текущая версия на 11:24, 28 августа 2019
Содержание
Описание
table.sort - сортирует массив в заданном порядке.
Синтаксис
Привязка к окну: Нет.
Работа со свернутым окном: Да.
Все параметры заключаются в скобки и разделяются запятыми.
table.sort (<array> [, comp])
Где:
<array> - массив.
[, comp] - необязательный параметр. Если параметр задан, то он должен быть функцией, которая для двух получаемых параметров возвращает true если первый из них меньше второго.
Примеры
--lua
local arr = {20, 30, 10, 50}
log ("clear") log ("mode compact")
log ("Массив до сортировки")
for i = 1, #arr do
log (arr[i])
end
table.sort(arr) -- сортировать массив
log ("Массив после сортировки")
for i = 1, #arr do
log (arr[i])
end
--lua
local arr = {20, -30, 10, -50}
log ("clear") log ("mode compact")
log ("Массив до сортировки:")
for i = 1, #arr do
log (arr[i])
end
table.sort(arr)
log ("Массив после сортировки:")
for i = 1, #arr do
log (arr[i])
end
--lua
-- сортировка по убыванию
local arr = {20, 30, 10, 50}
log ("clear") log ("mode compact")
log ("Массив до сортировки:")
for i = 1, #arr do
log (arr[i])
end
table.sort (arr, function (a, b) return (a > b) end)
log ("Массив после сортировки:")
for i = 1, #arr do
log (arr[i])
end
--lua
log ("clear") log ("mode compact")
-- функция сортировки по первому элементу, следующие не учитываются
function mySort(a,b)
if a[1] < b [1] then
return true
end
return false
end
local arr = {}
table.insert(arr, {20, 10, 15})
table.insert(arr, {15, 5, 13})
table.insert(arr, {15, 7, 13})
log ("Массив до сортировки:")
for i = 1, #arr do
log (table.concat(arr[i], ","))
end
table.sort(arr, mySort) -- сортировка
log ("Массив после сортировки:")
for i = 1, #arr do
log (table.concat(arr[i], ","))
end
--lua
log ("clear") log ("mode compact")
-- функция сортировки по первом двум элементам, если первые равны, то сравниваются вторые
function mySort(a,b)
if a[1] < b [1] then
return true
else
if a[1] == b [1] and a[2] < b [2] then -- если первые элементы равны, сравнить вторые
return true
end
end
return false
end
local arr = {}
arr[#arr+1]={20, 10, 15}
arr[#arr+1]={15, 4, 13}
arr[#arr+1]={15, 5, 17}
log ("Массив до сортировки:")
for i = 1, #arr do
log (table.concat(arr[i], ","))
end
table.sort(arr, mySort) -- сортировка
log ("Массив после сортировки:")
for i = 1, #arr do
log (table.concat(arr[i], ","))
end
--lua
log ("clear") log ("mode compact")
local arr = {}
arr[#arr+1]={20, 10, 15}
arr[#arr+1]={15, 4, 13}
arr[#arr+1]={15, 5, 17}
log ("Массив до сортировки:")
for i = 1, #arr do
log (table.concat(arr[i], ","))
end
table.sort(arr, function (a,b) return (a[3] < b[3]) end) -- сортировка по 3му элементу
log ("Массив после сортировки:")
for i = 1, #arr do
log (table.concat(arr[i], ","))
end
Смотрите также
table.insert (Lua)
table.remove (Lua)
table.concat (Lua)
unpack (Lua)
table.maxn (Lua)