【Lua】Table根据value排序

来源:互联网 发布:can网络数据帧 编辑:程序博客网 时间:2024/06/05 17:08

使用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   就可以让装备补位从小到大输出了

0 0
原创粉丝点击