Table.sort (Lua)
Версия от 21:42, 27 августа 2019; Tatikoma (обсуждение | вклад) (Новая страница: «== Описание == '''table.sort''' - сортирует массив в заданном порядке. == Синтаксис == Привязка к окн...»)
Содержание
Описание
table.sort - сортирует массив в заданном порядке.
Синтаксис
Привязка к окну: Нет. <br>Работа со свернутым окном: Да. <br>Все параметры заключаются в скобки и разделяются запятыми.
table.sort (<array> [, comp])
Где: <br><array> - массив. <br>[, 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) <br>table.remove (Lua) <br>table.concat (Lua) <br>unpack (Lua) <br>table.maxn (Lua)