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)