微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

--]]

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐