按任意值对lua表进行排序

时间:2013-03-16 16:34:43

标签: sorting lua lua-table

我有一个具有以下结构的表:

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

我想要做的是使用委托函数使用table.sort()对该表进行排序,以便优先级变量(高,低,中等)按列表中的高位顺序排序列表,接着是中等然后低。我该怎么做呢?

2 个答案:

答案 0 :(得分:4)

您似乎知道table.sort是如何运作的,那么您在哪里被困? 只需创建一个查找表,将优先级名称转换为整数并进行比较:

priorities = {high = 2, medium = 1, low = 0}
table.sort(t, function(e1, e2)
    return priorities[e1[2]] > priorities[e2[2]]
end)

答案 1 :(得分:0)

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