最近实习接到一个对道具进行排序的任务,对lua了解不深,刚开始犯了点傻;
Lua自带table排序我们可以自定义排序函数,但只支持下标为整型的数组table,所以遇到嵌套table,键值对这种用另一种方法解决;
数组排(只支持下标为整型的table)
require "TableUtil";
myTable = {
[1] = "abc",
[2] = "sfsfa",
[3] = "z451"
}
local function sortFunc(a, b)
return a > b;
end
table.sort( myTable, sortFunc);
print(TableUtil.TableToString(myTable))
[1] = "z451",
[2] = "sfsfa",
[3] = "abc",
[Finished in 0.0s]
键值对排(把原始table转换成数组table)
require "TableUtil";
myTable = {
["easy"] = {
level = 20
},
["hard"] = {
level = 5
},
["normal"] = {
level = 10
}
}
local tempList = {}
for _, v in pairs(myTable) do
table.insert(tempList, v);
end
local function sortFunc(a, b)
return a.level > b.level;
end
table.sort( tempList, sortFunc);
print(TableUtil.TableToString(tempList))
[1] = {
["level"] = 20,
},
[2] = {
["level"] = 10,
},
[3] = {
["level"] = 5,
},
[Finished in 0.1s]