LUA表排序

表排序:table.sort (list [,comp])

参数list:指定表,可选参数comp:排序函数,无参数时通常按升序排序。

排序函数针对表中连续的序列,其间不可以存在空洞或nil,排序函数需要两个形参(对应表中每次参加比较的两个数据),需要一个比较两个形参表达式的返回值,不能含有等于关系,例如>=,<=,==。

do
    s = {{name="山海", lv=60},{name="山海", lv=55},{name="天空", lv=20},{name="大地", lv=24},{name="蓝天", lv=80},{name="白云", lv=34},{name="山海", lv=68}}
function st (s1, s2)-- 排序函数 if s1.name == s2.name then -- 如果他们的名字相同,就返回按等级升序排序 return s1.lv < s2.lv else return s1.name < s2.name -- 否则按名字升序排序 end -- return s1.name < s2.name or s1.name == s2.name and s1.lv < s2.lv -- 与上面等价 end table.sort (s, st) for k, v in ipairs(s) do print (k, v.name, v.lv) end end

--[[

1  大地  24
2  天空  20
3  山海  55
4  山海  60
5  山海  68
6  白云  34
7  蓝天  80

--]]

 

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...