sorting - 将lua中的表排序为多个组
问题描述
我需要对列表进行排序,_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)
解决方案
您只需要编写比较函数,以便在字段比较相等Roll
时比较字段:RankPrio
_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
推荐阅读
- c - 如何在 sqlite3 数据库中绑定浮点值?
- django - 在 Amazon SQS 上关闭 CELERY.BACKEND_CLEANUP
- linux - Bash脚本输出在执行期间未显示?
- javascript - 如何从 json 数组中获取特定的键值对
- python - 未能在 Jupyter 笔记本中使用 Python 3.7 为分类模型生成 AUC 结果
- google-apps-script - 在编辑器(Google Docs)侧边栏插件中使用 Google Analytics
- c# - 使用 Linq 匹配本地列表中任何对象的 2 属性
- python - 列表中的第一个数字变量不大于
- javascript - 使用 css 显示和 JS 将图像替换为另一个
- java - 从 JVM 堆中删除密码