使用选定的关键字遍历表格

下面的表和循环语句是我们通常在lua中访问所有键值对的方法

local t = {a1 =11, a2=22, c=3, d=4}

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

-- 输出:k = a1, a2, c, d & v = 11, 22, 3, 4。a1 11 a2 22 c 3 d 4

如果我只想遍历这个表的子集,循环只在某些关键字上迭代,如下所示

k = a1,a2

由于我打算在t中添加更多的表格

local t = {
          {a1 = 11, a2 = 22, c = 3, d = 4},
          {a1 = 12, a2 = 23, c = 2, d = 4},
          {a1 = 13, a2 = 24, c = 1, d = 4},
          {a1 = 14, a2 = 25, c = 0, d = 4},
          {a1 = 15, a2 = 26, c = 0, d = 4}
          }

我想用以下代码之类的东西

for k = {a1, a2} in pairs (t) do
-- something
end

是否有一种方法可以做到这一点而不是在循环中添加if条件,因为这将迭代所有k,v对,这是不希望的

for k,v in pairs (t) do
    if (k == a1 or k == a2) then
    -- something
点赞
用户4070330
用户4070330

你可以这样做:

local t = {
   {a1 = 11, a2 = 22, c = 3, d = 4},
   {a1 = 12, a2 = 23, c = 2, d = 4},
   {a1 = 13, a2 = 24, c = 1, d = 4},
   {a1 = 14, a2 = 25, c = 0, d = 4},
   {a1 = 15, a2 = 26, c = 0, d = 4}
   }
local keys_to_iterate = {"a1", "a2"}

for index = 1, #t do
  for k = 1, #keys_to_iterate do
    if t[index][keys_to_iterate[k]] then
      print(keys_to_iterate[k] , t[index][keys_to_iterate[k]])
    end
  end
end

你可以在这里查看:

https://repl.it/repls/CoralIndianredVaporware

2018-09-18 13:11:07