【问题标题】:sorting a table in descending order in Lua在 Lua 中按降序对表格进行排序
【发布时间】:2011-10-07 06:07:51
【问题描述】:

我无法让它工作:

tbl = {
    [1] = { ['etc2'] = 14477 },
    [2] = { ['etc1'] = 1337 },
    [3] = { ['etc3'] = 1336 },
    [4] = { ['etc4'] = 1335 }
}

for i = 1, #tbl do
    table.sort(tbl, function(a, b) return a[i] > b[i] end)
    print(tbl[i] .. '==' .. #tbl)
end

收到此错误:尝试比较两个 nil 值

这是table value sorting in lua的后续内容

【问题讨论】:

  • 我认为您不想在循环内对表格进行排序。另外,您究竟是如何对其进行排序的? a[i] 为 nil,因为 a 是一个带有字符串索引的表。
  • 欢迎来到 SO Lucas。当您需要澄清您的问题时,请使用帖子下方的编辑按钮,而不是打开新问题。我将把另外两个标记为这个重复,因为我相信这个 Q&A 最好地解决了这个问题。

标签: sorting lua lua-table


【解决方案1】:

这个怎么样?

tbl = {
    { 'etc3', 1336 },
    { 'etc2', 14477 },
    { 'etc4', 1335 },
    { 'etc1', 1337 },
}

table.sort(tbl, function(a, b) return a[2] > b[2] end)

for k,v in ipairs(tbl) do
    print(v[1], ' == ', v[2])
end

以这种方式组织数据使排序更容易,请注意,我只调用一次table.sort,而不是每个表元素调用一次。我根据子表中的第二个值进行排序,我认为这是您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多