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)