【问题标题】:Lua - print table keys in order of insertionLua - 按插入顺序打印表键
【发布时间】:2017-01-04 01:05:45
【问题描述】:
house = {
         ["Street 22"] = {
                           {name = "George", age = 20},
                           {name = "Pete", age = 25}
                         },
         ["Street 30"] = {
                           {name = "John", age = 32},
                         }
       }

我想按房屋表的确切顺序打印房屋表的钥匙/街道。如果我使用:

for i, v in pairs(house) do
    print(i)
end

这将打印它们,但顺序似乎有点随机...如何按插入顺序打印它们?

【问题讨论】:

  • 用街道名称创建一个数组,用 ipairs 对其进行迭代,然后进行查找。

标签: lua lua-table


【解决方案1】:

正如 lhf 的回答已经说明的那样,您将无法仅使用表格的关联映射部分来执行此操作。但是,如果您使用表的数组索引部分维护插入顺序,则可以这样做。例如。

table.insert(house, "Street 22")
local street = house[#house]
house[street] = { {name = "George", age = 20},
                  {name = "Pete", age = 25} }

table.insert(house, "Street 30")
street = house[#house]
house[street] = { {name = "John", age = 32} }

之后你可以使用ipairs打印出来

for _, v in ipairs(house) do
  print(v)
end

【讨论】:

    【解决方案2】:

    Lua 表是一组键值对。没有顺序。

    manual 说:

    未指定枚举索引的顺序,即使对于数字索引也是如此。

    【讨论】:

      猜你喜欢
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多