这是一个例子
local query = {}
query['count'] = 1
query['query'] = 2
for k,v in pairs(query) do
print(k)
end
以上内容将首先打印query
然后打印count
。
如何在不添加int索引键的情况下确保在循环遍历表时键字符串保持其顺序?
答案 0 :(得分:10)
我在评论中回答,但是我正在这里移动它以更好地了解我在说什么。
local queryindex = {"count", "query"}
local query = {}
query['count'] = 1
query['query'] = 2
for _,v in ipairs(queryindex) do
print(query[v])
end
答案 1 :(得分:2)
只要值保证从1,2,3到有些N没有孔且没有重复,就像在你的例子中一样,你可以使用反向键值对构建一个序列,如下所示:
local seq = {}
for k,v in pairs(query) do
seq[v] = k
end
for _,v in ipairs(seq) do
print(v)
end
答案 2 :(得分:2)
在Lua中,只能按顺序解析具有基于1的连续整数键(a.k.a。数组表)的表。
因此,如果您想按顺序解析表t
,那么您所做的是:
keys
表keys
表格迭代t
。示例:
function sortedKeys(query, sortFunction)
local keys, len = {}, 0
for k,_ in pairs(query) do
len = len + 1
keys[len] = k
end
table.sort(keys, sortFunction)
return keys
end
...
local query = {}
query['count'] = 1
query['query'] = 2
for _,k in pairs(sortedKeys(query)) do
print(k, query[k])
end
也可以创建an iterator来更加惯用,但我从来没有这个需要。