按任意值对lua表进行排序

我有一个带有以下结构的表格:

table = {
    [1] = {"something", "high"}
    [2] = {"something else", "low"}
    [3] = {"something further", "medium"},
    [4] = {"yet more something", "medium"},
}

我想使用代理函数通过table.sort()来排序该表格,使得优先级变量(high,low,medium等)按照高优先级排在列表中,然后是中等优先级,最后是低优先级。我该如何做到这一点?

点赞
用户1633117
用户1633117

你似乎已经知道 table.sort 如何工作了,那你卡在哪里了?

只需要创建一个将优先级名称转换为整数的查找表,并进行比较即可:

priorities = {high = 2, medium = 1, low = 0}
table.sort(t, function(e1, e2)
    return priorities[e1[2]] > priorities[e2[2]]
end)
2013-03-16 16:56:30
用户1847592
用户1847592
表格按以下方式排序:

table.sort(t, function(e1, e2) return e1[2]:sub(-1) < e2[2]:sub(-1) end )


2013-03-16 18:21:49