lua table的循环顺序错误

我正在尝试循环遍历lua中的一个table,但是表格的循环顺序是错误的。下面的代码输出:

  • key : three num: 3
  • key : one num: 1
  • key : two num: 2

代码如下:

  testNumbers =
  {
    one = 1,
    two = 2,
    three = 3
  }

for key,num in pairs(testNumbers) do

print("key : " .. key .. " num: " .. num)

end

如何使它循环顺序正确?我不能改变代码太多,因为我现在需要key变量。

点赞
用户3574628
用户3574628

为了提高效率,Lua 表格不追踪键的顺序。如果您无法更改表格的格式,仍然可以通过保持键的数组并通过它进行迭代来强制执行迭代顺序。

testNumbers =
  {
    one = 1,
    two = 2,
    three = 3
  }

local order = {'one', 'two', 'three'}

for _, key in ipairs(order) do
  print("key : " .. key .. " num: " .. testNumbers[key])
end
2019-10-07 19:06:16
用户107090
用户107090

在 Lua 中,表是键值对的集合,而不是序列。

遍历表时,其键值对的访问顺序是未指定的。可以参考手册

2019-10-07 23:41:10