Lua 中按多个组排序表格

我需要将列表 _rolls 按照用户挑战和优先级进行排序。

_rolls = {
    {Username="用户1", Roll=50, RankPrio=1},
    {Username="用户2", Roll=2, RankPrio=3},
    {Username="用户4", Roll=10, RankPrio=2},
    {Username="用户5", Roll=9, RankPrio=2},
    {Username="用户3", Roll=32, RankPrio=2}
}

我希望将列表按以下方式排序:

_rolls = {
    {Username="用户2", Roll=2, RankPrio=3},
    {Username="用户3", Roll=32, RankPrio=2},
    {Username="用户4", Roll=10, RankPrio=2},
    {Username="用户5", Roll=9, RankPrio=2},
    {Username="用户1", Roll=50, RankPrio=1}
}

我知道可以使用以下代码按照 Rolls 进行排序,但我无法找到这样做两个条件的方法。

table.sort(_rolls, function(a,b) return a.Roll < b.Roll end)
点赞
用户6879826
用户6879826

你只需要编写比较函数,以便在 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
2020-08-11 01:11:56