类型 函数 库 table.* 返回值 无 修订 版本 2024.3703 关键词 表,数组
对表元素进行原地排序,排序顺序由给定参数决定,排序范围从 table[1]
到 table[n]
,其中 n
为表的长度。它接收要排序的表(数组)以及一个可选的 compare
比较函数。此 compare
函数接收两个参数,如果第一个参数应该排在排序数组的前面,则必须返回 true
。如果**未**给出 compare
函数,则使用标准 Lua 运算符 <
。
排序算法并非完全稳定;也就是说,被给定顺序视为相等的元素,它们的相对位置可能会因排序而改变。
table.sort ( array [, compare] ) |
数组. 要排序的数组。
函数. 如果未给出,则使用标准 Lua 运算符 <
。
local t = { 3,2,5,1,4 } local function compare( a, b ) return a < b -- Note "<" as the operator end table.sort ( t, compare ) print ( table.concat ( t, ", " ) ) --> 1, 2, 3, 4, 5 |
local t = { 3,2,5,1,4 } local function compare( a, b ) return a > b -- Note ">" as the operator end table.sort ( t, compare ) print ( table.concat ( t, ", " ) ) --> 5, 4, 3, 2, 1 |
local fruitList = { { fruitName= "apple" , fruitColor= "red" }, { fruitName= "watermelon" , fruitColor= "green" }, { fruitName= "orange" , fruitColor= "orange" }, { fruitName= "lemon" , fruitColor= "yellow" } } local function compare( a, b ) return a.fruitName < b.fruitName end table.sort ( fruitList, compare ) for i,v in ipairs ( fruitList ) do print ( i, v.fruitName ) --> 1 apple --> 2 lemon --> 3 orange --> 4 watermelon end |