网上有好多排序,不过写的都大同小异。本文讲解下多重排序,意思是多个条件排序。
前提:
1.Lua排序的原理是冒泡排序,即从前往后比较,满足一定条件A则交换,否则不交换。
前提:
1.Lua排序的原理是冒泡排序,即从前往后比较,满足一定条件A则交换,否则不交换。
2.Lua排序函数table.sort(tbl, sortFunc), sortFunc中会比较前后表中前后两个值,sortFunc函数返回true则不交换,返回false则交换。
例子:
table_demo = {
[1] = {
age = 18,
height = 1.6,
weight = 100,
},
[2] = {
age = 13,
height = 1.5,
weight = 80,
},
[3] = {
age = 14,
height = 1.7,
weight = 120,
},
[4] = {
age = 11,
height = 1.6,
weight = 110,
},
[5] = {
age = 18,
height = 1.6,
weight = 90,
},
}
local function sortFunc(a, b)
if a.age == b.age then
if a.height == b.height then
return a.weight < b.weight
else
return a.height < b.height
end
else
return a.age < b.age
end
end
--目标:将table_demo 按照age从小到大排序, 若age大小相等则按照height从小到大排序, 如果height一样大,则按weight从小到大排序
table.sort(table_demo, sortFunc)
for k=1, 5 do
print(string.format("k:%d age:%d height:%.1f weight:%d", k, table_demo[k].age, table_demo[k].height, table_demo[k].weight))
end