Difference between revisions of "Table.sort"

From GiderosMobile
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
'''<translate>Available since</translate>:''' Gideros 2011.6<br/>
+
'''Available since:''' Gideros 2011.6<br/>
=== <translate>Description</translate> ===
+
'''Class:''' [[table]]<br/>
<translate>Sort the elements of a table in-place (i.e. alter the table).
 
[[Special:MyLanguage/> t = { 3,2,5,1,4 }|> t = { 3,2,5,1,4 }]]
 
[[Special:MyLanguage/> table.sort(t)|> table.sort(t)]]
 
[[Special:MyLanguage/> = table.concat(t, ", ")  -- display sorted values|> = table.concat(t, ", ")  -- display sorted values]]
 
[[Special:MyLanguage/1, 2, 3, 4, 5|1, 2, 3, 4, 5]]
 
  
A comparison function can be provided to customise the element sorting. The comparison function must return a boolean value specifying whether the first argument should be before the second argument in the sequence. The default behaviour is for the < comparison to be made. For example, the following behaves the same as no function being supplied:</translate>
+
=== Description ===
<source lang="lua">
+
Sorts the elements of a table in-place (i.e. alter the table).
table.sort(table,comp)
+
<syntaxhighlight lang="lua">
</source>
+
table.sort(table,comp)
=== <translate>Parameters</translate> ===
+
</syntaxhighlight>
'''table''': (table) <translate>table to sort</translate> <br/>
+
 
'''comp''': (function) <translate>comparison function returning bool comparison result</translate> '''optional'''<br/>
+
A comparison function can be provided to customise the element sorting. The comparison function must return a boolean value specifying whether the first argument should be before the second argument in the sequence. The default behaviour is for the < comparison to be made. For example, the following behaves the same as no function being supplied:
 +
 
 +
<syntaxhighlight lang="lua">
 +
> t = { 3,2,5,1,4 }
 +
> table.sort(t)
 +
> = table.concat(t, ", ") -- display sorted values
 +
1, 2, 3, 4, 5
 +
</syntaxhighlight>
 +
 
 +
=== Parameters ===
 +
'''table''': (table) table to sort<br/>
 +
'''comp''': (function) comparison function returning bool comparison result '''optional'''<br/>
 +
 
 +
=== Examples ===
 +
'''Alphabetical order'''
 +
<syntaxhighlight lang="lua">
 +
local people = {}
 +
people [1] = { name = "bob", age = 26 }
 +
people [2] = { name = "sue", age = 22 }
 +
people [3] = { name = "ann", age = 28 }
 +
table.sort(people, function(a, b)
 +
return a.name < b.name
 +
end)
 +
</syntaxhighlight>
 +
 
 +
'''Inversed numerical order'''
 +
<syntaxhighlight lang="lua">
 +
local people = {}
 +
people [1] = { name = "bob", age = 26 }
 +
people [2] = { name = "sue", age = 22 }
 +
people [3] = { name = "ann", age = 28 }
 +
table.sort(people, function(a, b)
 +
return a.age > b.age -- inversed
 +
end)
 +
</syntaxhighlight>
 +
 
 +
{{Table}}

Latest revision as of 17:35, 24 May 2024

Available since: Gideros 2011.6
Class: table

Description

Sorts the elements of a table in-place (i.e. alter the table).

table.sort(table,comp)

A comparison function can be provided to customise the element sorting. The comparison function must return a boolean value specifying whether the first argument should be before the second argument in the sequence. The default behaviour is for the < comparison to be made. For example, the following behaves the same as no function being supplied:

> t = { 3,2,5,1,4 }
> table.sort(t)
> = table.concat(t, ", ")  -- display sorted values
1, 2, 3, 4, 5

Parameters

table: (table) table to sort
comp: (function) comparison function returning bool comparison result optional

Examples

Alphabetical order

local people = {}
people [1] = { name = "bob", age = 26 }
people [2] = { name = "sue", age = 22 }
people [3] = { name = "ann", age = 28 }
table.sort(people, function(a, b)
	return a.name < b.name
end)

Inversed numerical order

local people = {}
people [1] = { name = "bob", age = 26 }
people [2] = { name = "sue", age = 22 }
people [3] = { name = "ann", age = 28 }
table.sort(people, function(a, b)
	return a.age > b.age -- inversed
end)