【问题标题】:Lua, insert value from loop into new tableLua,将循环中的值插入新表
【发布时间】:2020-07-09 09:34:55
【问题描述】:

我试图弄清楚如何遍历 LUA 表并获取字段的结果并将它们输入到新表中。在下面的示例代码中,我想从每条记录中获取电话值并将其插入到新表 phoneNumbers 中。我已经尝试了几种方法,基本上我一直得到一个没有数据的表。

我不确定我错过了什么,但我觉得它与 value.phone 有关。任何帮助表示赞赏!

local phoneNumbers = {}
local people = {
   {
       name = "Fred",
       address = "16 Long Street",
       phone = "123456"
   },
   {
       name = "Wilma",
       address = "16 Long Street",
       phone = "123456"
   },
   {
       name = "Barney",
       address = "17 Long Street",
       phone = "123457"
   }
}
        for index,data in ipairs(people) do
            for key, value in pairs(data) do
        --print('\t', key, value)
        table.insert(phoneNumbers, 1, value.phone)
        --phoneNumbers[1] = value.phone
      end
    end

【问题讨论】:

  • 你的代码看起来好像你想多了。取出内部的for 语句。你想要的信息在data.phone

标签: lua


【解决方案1】:

根据评论,您可以这样做:

for i = 1, #people do
    phoneNumbers[i] = people[i].phone
end

-- test to see the result
for i = 1, #phoneNumbers do
    print(phoneNumbers[i])
end

或者这也有效:

for k, v in pairs(people) do
    phoneNumbers[k] = v.phone
end

-- test to see the result
for k, v in pairs(phoneNumbers) do
    print(k, v)
end

【讨论】:

  • 感谢您的解决方案。我更喜欢第二种解决方案。一个问题...为什么 phoneNumers[k] 中的 k 是?
  • 你可以随意命名,但对我来说 k、v(键、值对)更具可读性。
  • 哦,我误解了你的问题,我放了 k 以避免分配索引 (i) 并执行 i = i + 1
  • 好的。那么K只是将原表的索引分配给新表吗?我理解正确吗?我会尝试phoneNumbers []。那不会奏效吗?
  • 不行,你需要一个索引,看第一个例子,除非你使用 table.insert...
猜你喜欢
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多