簡體   English   中英

將 lua 中的表排序為多組

[英]Sort table in lua as multible groups

我需要對列表_rolls進行排序,以考慮用戶的滾動和排名。

_rolls = {
    {Username="User1", Roll=50, RankPrio=1},
    {Username="User2", Roll=2, RankPrio=3},
    {Username="User4", Roll=10, RankPrio=2},
    {Username="User5", Roll=9, RankPrio=2},
    {Username="User3", Roll=32, RankPrio=2}
}

我希望列表排序為

_rolls = {
    {Username="User2", Roll=2, RankPrio=3},
    {Username="User3", Roll=32, RankPrio=2},
    {Username="User4", Roll=10, RankPrio=2},
    {Username="User5", Roll=9, RankPrio=2},
    {Username="User1", Roll=50, RankPrio=1}
}

我知道我可以用它來按勞斯萊斯排序,但我看不出兩種方法都可以。

table.sort(_rolls, function(a,b) return a.Roll < b.Roll end)

您只需要編寫比較 function 以便在RankPrio字段比較相等時比較Roll字段:

_rolls = {
    {Username="User1", Roll=50, RankPrio=1},
    {Username="User2", Roll=2, RankPrio=3},
    {Username="User4", Roll=10, RankPrio=2},
    {Username="User5", Roll=9, RankPrio=2},
    {Username="User3", Roll=32, RankPrio=2}
}

table.sort(_rolls,
           function (a, b)
             if a.RankPrio == b.RankPrio then
               return b.Roll < a.Roll
             else return b.RankPrio < a.RankPrio
             end
end)
> table.inspect(_rolls)
1 = 
    RankPrio = 3
    Username = User2
    Roll = 2
2 = 
    RankPrio = 2
    Username = User3
    Roll = 32
3 = 
    RankPrio = 2
    Username = User4
    Roll = 10
4 = 
    RankPrio = 2
    Username = User5
    Roll = 9
5 = 
    RankPrio = 1
    Username = User1
    Roll = 50

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM