【Lua】Table根据value排序

14 篇文章 0 订阅

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值