遍历表格

时间:2019-01-27 13:08:18

标签: lua

我有此表local cookies = {{["name"]=23, ["value"]=333}, {["name"]=222, ["value"]=33233}},并且我想遍历子表以找到具有正确“名称”的表。这是我尝试过的

  for _,elm in ipairs(cookies) do
    for k,v in ipairs(elm) do
      print(k)
      if k == "name" and v == 222 then
          print(v)
      end
    end
  end

我确实在外部for循环中显示了它对表的可见性,但是,它甚至没有进入内部for循环-为什么?如何找到“名称”等于某个值的子表?

1 个答案:

答案 0 :(得分:3)

ipairs仅遍历键1、2、3,...,因此不会访问键"name"。如果要访问所有键,请使用pairs(尽管会警告迭代顺序不可预测)。

但是,对于您的示例,您根本不需要内部循环。您可以简单地将榆木的名称获取为elm.name

for _,elm in ipairs(cookies) do
    if elm.name == "222" then
        print(elm.name, elm.value)
    end
end    

实际上,如果您不需要排序或需要支持重复的cookie名称,那么您的cookies表可以成为name => value的字典,从而使您无需编写循环即可:

print(cookies["222"]) --> 33233