如何使Lua表键按顺序排列

我的测试代码:

local jsonc = require "jsonc"

local x = {
    a = 1,
    b = 2,
    c = 3,
    d = 4,
    e = 5,
}

for k, v in pairs(x) do
    print(k,v)
end

print(jsonc.stringify(x))

输出结果:

a   1
c   3
b   2
e   5
d   4
{"a":1,"c":3,"b":2,"e":5,"d":4}

有人帮帮忙:

  1. 从for pairs输出中可以看出,lua通过键哈希顺序存储表,我该如何改变它?
  2. 我需要输出:{"a":1,"b":2,"c":3,"d":4,"e":5}
  3. 谢谢
点赞
用户3574628
用户3574628

Lua tables不能保留它们键的顺序。 有两个可能的解决方案。

您可以将键存储在单独的数组中,并在需要遍历表时通过该数组迭代:

local keys = {'a', 'b', 'c', 'd', 'e'}

或者,您可以使用一组配对的数组,而不是哈希表:

local x = {
    {'a', 1},
    {'b', 2},
    {'c', 3},
    {'d', 4},
    {'e', 5},
}
2019-10-29 04:56:23