使用lua开发需要把有用的数据全部存进Table里,lua也提供了一个sort接口来给table排序,但是sort的实现也是基于冒泡排序,他默认table的key是从1开始的,
这样就会造成当我们的key是一些特殊的标志位,比如游戏中背包数据的GUID,就会无法正常排序。所以我们需要单独封一个接口来实现通过value来排序的功能
下面就以装备列表中,Key为GUID 通过装备部位来排序的例子
function pairsByKeys(t)
local tempTable = { }
for i,v in pairs(t) do
local temp = #tempTable + 1
tempTable[temp] = {}
tempTable[temp].guid = i
tempTable[temp].EquipPart = v.EquipPart
end
table.sort(a,function(m,n) return m.EquipPart < n.EquipPart end)
local count = 0
return function()
count = count + 1
local k = tempTable[count]
local v = nil
if k then k = tempTable[count].guid v = testc[tempTable[count].guid] end
return k,v
end
end
OK
当我们需要排序的时候类似这样 for i,v in pairsByKeys(t) do 就可以让装备补位从小到大输出了