排序 – 在Lua中排序表[]
发布时间:2020-12-15 00:22:52 所属栏目:大数据 来源:网络整理
导读:我有一个我想要排序的Lua表。表的格式如下: tableOfKills[PlayerName] = NumberOfKills 这意味着,例如,如果我有一个名叫罗宾的球员,总共有8次杀戮,另外一个命名为Jon,总共有10次杀戮,表将是: tableOfKills[Robin] = 8tableOfKills[Jon] = 10 如何排
我有一个我想要排序的Lua表。表的格式如下:
tableOfKills[PlayerName] = NumberOfKills 这意味着,例如,如果我有一个名叫罗宾的球员,总共有8次杀戮,另外一个命名为Jon,总共有10次杀戮,表将是: tableOfKills[Robin] = 8 tableOfKills[Jon] = 10 如何排序这种类型的表,以显示最高的杀死率?提前致谢! 解决方法
Lua中的表是一组具有唯一键的键值映射。这些对以任意顺序存储,因此表不以任何方式排序。
你可以做的是按顺序迭代表。基本的对不保证键的访问顺序。这是一个自定义版本的对,我称之为多余的,因为它以排序顺序遍历表: function spairs(t,order) -- collect the keys local keys = {} for k in pairs(t) do keys[#keys+1] = k end -- if order function given,sort by it by passing the table and keys a,b,-- otherwise just sort the keys if order then table.sort(keys,function(a,b) return order(t,a,b) end) else table.sort(keys) end -- return the iterator function local i = 0 return function() i = i + 1 if keys[i] then return keys[i],t[keys[i]] end end end 以下是使用此功能的示例: HighScore = { Robin = 8,Jon = 10,Max = 11 } -- basic usage,just sort by the keys for k,v in spairs(HighScore) do print(k,v) end --> Jon 10 --> Max 11 --> Robin 8 -- this uses an custom sorting function ordering by score descending for k,v in spairs(HighScore,function(t,b) return t[b] < t[a] end) do print(k,v) end --> Max 11 --> Jon 10 --> Robin 8 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |