gpt4 book ai didi

sorting - 在Lua中对表格进行排序

转载 作者:行者123 更新时间:2023-12-03 09:00:19 24 4
gpt4 key购买 nike

我有一个试图排序的Lua表。该表的格式如下:

tableOfKills[PlayerName] = NumberOfKills

举例来说,这意味着,如果我有一个叫Robin的玩家,总共杀死了8个玩家,另一个叫Jon的玩家,总共杀死了10个玩家,那么该表将是:
tableOfKills[Robin] = 8
tableOfKills[Jon] = 10

我将如何对这种类型的表进行排序以首先显示出最高的杀死率?提前致谢!

最佳答案

Lua中的表是一组具有唯一键的键-值映射。这些对以任意顺序存储,因此该表不会以任何方式排序。

您可以做的是以某种顺序遍历表。基本的pairs不能保证键的访问顺序。这是pairs的自定义版本,我称它为spairs,因为它以排序的顺序遍历表:

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,a,b) return t[b] < t[a] end) do
print(k,v)
end
--> Max 11
--> Jon 10
--> Robin 8

关于sorting - 在Lua中对表格进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com