--排列顺序优先级从高到低依次为:
--1:是否在线
--2:公会职位
--3:贡献度
--4:a,b为需要排序的两个table
local function SortByPosition(a, b)
local r
local a_is_online = a.is_online
local b_is_online = b.is_online
local a_authority = a.authority
local b_authority = b.authority
local a_total_contribution= a.total_contribution
local b_total_contribution = b.total_contribution
if a_is_online == a_is_online then
if a_authority == a_authority then
r = a_total_contribution> a_total_contribution
else
r = b_authority > b_authority
end
else
r = a_is_online > a_is_online
end
return r
end
-- 排序迭代器
function pairsBySort(_t, func)
local a = {}
for n in pairs(_t) do a[#a + 1] = n end
table.sort(a, func)
local i = 0
return function()
i = i + 1
return a[i], _t[a[i]]
end
end
-- not_online_members为需要排序的table值,已存在
-- GetSortTable为获取排序后的table
GetSortTable = {}
for i,v in pairsBySort(not_online_members, SortByPosition) do
GetSortTable[#GetSortTable+ 1] = v
end
网友评论