工作中遇到的排序问题

最近在用cocos2dx lua写客户端的模块,在写到背包中中遇到要排序的问题。

背包中放有大量的道具,都是用listview来加载这些道具的视图,问题来了。这些道具需要按照顺序来一次排列,每个道具含有等级,颜色,位置。排列的优先级是等级>颜色>位置。

服务器端发来的道具数据,都是无序的。开始的时候,我在想用神马插入排序,但是想想发现,它有三个要排列的属性。等级相同,看颜色大小,颜色大小再相同,就看位置。排序还真是麻烦,而且低效。主程想到了一个很灵巧的方法。他把三个属性粘合在一起。

local keyList = { }

 local str = nil 

local dataList = { }

for k , v in pairs(data) do

str = data.lv..data.color..data.pos..k

str = tonumber(str)

keyList .key = str

keyList .value = v

table.insert(dataList ,keyList )

end

table.sort(dataList ,function(a,b) return a.key > b.key end)

       这样子得到的结果就是一次型排好序的,用pairs循环输出的时候,就可以了。很灵巧的方法吧。还是主程厉害啊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值