lua table索引无序 实现多重排序
table_score = {
[1] = {
chinese = 80,
english = 76,
history = 100,
},
[22] = {
chinese = 80,
english = 76,
history = 99,
},
[33] = {
chinese = 79,
english = 60,
history = 100,
},
[4] = {
chinese = 70,
english = 60,
history = 98,
},
[53] = {
chinese = 70,
english = 61,
history = 75,
},
}
local i = 1
local table_tmp = {}
for k,v in pairs(table_score)do
table_tmp[i] = {chinese = v.chinese, english = v.english, history = v.history}
i = i + 1
end
local function sortFunc_1(a, b)
if a.chinese == b.chinese then
if a.english == b.english then
return a.history < b.history
else
return a.english < b.english
end
else
return a.chinese < b.chinese
end
end
local function sortFunc_2(a, b)
if a.chinese == b.chinese then
if a.english == b.english then
return a.history > b.history
else
return a.english > b.english
end
else
return a.chinese > b.chinese
end
end
table.sort(table_tmp, sortFunc_2)
for k,v in pairs(table_tmp) do
print(k,v.chinese,v.english,v.history)
end