Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在Lua中按降序排序表_Sorting_Lua_Lua Table - Fatal编程技术网

Sorting 在Lua中按降序排序表

Sorting 在Lua中按降序排序表,sorting,lua,lua-table,Sorting,Lua,Lua Table,我无法让它工作: 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 = {
    [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值

这是后续的

这个怎么样

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
一次,而不是对表中的每个元素调用一次。我根据子表中的第二个值进行排序,我认为这是您想要的。

我认为您不想在循环中对表进行排序。还有,你到底是如何分类的
a[i]
为零,因为
a
是一个带有字符串索引的表。欢迎使用SO。当您需要澄清您的问题时,请使用帖子下方的编辑按钮,而不是打开新问题。我会将另外两个标记为这一个的副本,因为我相信这个问答最能解决问题。类似的问题: