Table.sort (Lua): различия между версиями

Материал из UoPilot
Перейти к навигации Перейти к поиску
(Новая страница: «== Описание == '''table.sort''' - сортирует массив в заданном порядке. == Синтаксис == Привязка к окн...»)
 
 
Строка 4: Строка 4:
 
== Синтаксис ==
 
== Синтаксис ==
 
Привязка к окну: Нет.
 
Привязка к окну: Нет.
<br>Работа со свернутым окном: Да.
+
<br>Работа со свернутым окном: Да.
&lt;br>Все параметры заключаются в скобки и разделяются запятыми.
+
<br>Все параметры заключаются в скобки и разделяются запятыми.
  table.sort (&lt;array> [, comp])
+
  table.sort (<array> [, comp])
 
Где:
 
Где:
&lt;br>'''&lt;array>''' - массив.
+
<br>'''<array>''' - массив.
&lt;br>'''[, comp]''' - необязательный параметр. Если параметр задан, то он должен быть функцией, которая для двух получаемых параметров возвращает true если первый из них меньше второго.
+
<br>'''[, comp]''' - необязательный параметр. Если параметр задан, то он должен быть функцией, которая для двух получаемых параметров возвращает true если первый из них меньше второго.
  
 
== Примеры ==
 
== Примеры ==
Строка 57: Строка 57:
 
  -- функция сортировки по первому элементу, следующие не учитываются
 
  -- функция сортировки по первому элементу, следующие не учитываются
 
  function mySort(a,b)
 
  function mySort(a,b)
     if  a[1] &lt; b [1] then
+
     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] &lt; b [1] then
+
     if  a[1] < b [1] then
 
         return true
 
         return true
 
     else
 
     else
         if  a[1] == b [1] and a[2] &lt; b [2] then  -- если первые элементы равны, сравнить вторые
+
         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] &lt; b[3]) end)    -- сортировка по 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)]]
&lt;br>[[table.remove (Lua)]]
+
<br>[[table.remove (Lua)]]
&lt;br>[[table.concat (Lua)]]
+
<br>[[table.concat (Lua)]]
&lt;br>[[unpack (Lua)]]
+
<br>[[unpack (Lua)]]
&lt;br>[[table.maxn (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)