Sorting 用lua对嵌套表排序
我有以下表格:Sorting 用lua对嵌套表排序,sorting,lua,lua-table,Sorting,Lua,Lua Table,我有以下表格: { STANDBY = { timeout = "10", mode = "0" }, RTP = { minport = "10000", maxport = "10010" } } 我想按字母顺序排序,因此生成的表应该是这样的: { RTP = { maxport = "10010", minport = "10000" }, STANDBY = { mode = "0", time
{
STANDBY = {
timeout = "10",
mode = "0"
},
RTP = {
minport = "10000",
maxport = "10010"
}
}
我想按字母顺序排序,因此生成的表应该是这样的:
{
RTP = {
maxport = "10010",
minport = "10000"
},
STANDBY = {
mode = "0",
timeout = "10"
},
}
你能帮我吗?引用下面的话 一个常见的错误是试图对表的索引进行排序。在表格中,索引形成一个集合,没有任何顺序。如果要对它们进行排序,必须将它们复制到数组中,然后对数组进行排序 如果使用
pairs()
遍历表,则名称将以任意顺序显示。但是,不能直接对它们进行排序,因为这些名称是表的键
解决方法也在同一页中提到
local tableVarName = {
STANDBY = {
timeout = "10",
mode = "0"
},
RTP = {
minport = "10000",
maxport = "10010"
}
}
function pairsByKeys (t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0 -- iterator variable
local iter = function () -- iterator function
i = i + 1
if a[i] == nil then return nil
else return a[i], t[a[i]]
end
end
return iter
end
for name, line in pairsByKeys(tableVarName) do
print(name, line)
end
那些是同一张桌子。你的问题没有道理。非整数键在Lua中没有顺序。它打印:
RTP表:0041A268备用表:0041A208
,这显然不是OP所说的。@EgorSkriptunoff递归使用相同的函数并不难。可以使用类型(a)=“表”
条件进行检查。