美文网首页
lua多条件排序table

lua多条件排序table

作者: 陈玉涛 | 来源:发表于2018-09-05 18:02 被阅读0次
    --排列顺序优先级从高到低依次为:
    --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
    

    相关文章

      网友评论

          本文标题:lua多条件排序table

          本文链接:https://www.haomeiwen.com/subject/rwqzwftx.html