这是一个例子
local query = {}
query['count'] = 1
query['query'] = 2
for k,v in pairs(query) do
print(k)
end
上面会先打印query
然后count
。
当我遍历表时,如何确保在不添加 int 索引键的情况下键字符串保持顺序?
我在评论中回答了,但我把它移到这里是为了更好地了解我在说什么。
local queryindex = {"count", "query"}
local query = {}
query['count'] = 1
query['query'] = 2
for _,v in ipairs(queryindex) do
print(query[v])
end
在 Lua 中,只能按顺序解析具有从 1 开始的连续整数键的表(也称为数组表)。
所以,如果你想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
也可以创建一个迭代器来更习惯地执行此操作,但我从来没有需要。
只要保证该值从 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