工作中遇到的排序问题

最近在用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循环输出的时候,就可以了。很灵巧的方法吧。还是主程厉害啊

你可能感兴趣的:(lua)