Перебор таблицы таблиц - PullRequest
       2

Перебор таблицы таблиц

0 голосов
/ 27 января 2019

У меня есть эта таблица 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 голосов
/ 27 января 2019

ipairs перебирает только ключи 1, 2, 3, ..., поэтому он не посещает клавишу "name".Если вы хотите просмотреть все ключи, используйте pairs (хотя имейте в виду, что порядок итераций не предсказуем).

Однако для вашего примера вам не нужен внутренний цикл вообще.Вы можете просто получить имя elm как elm.name:

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

На самом деле, если вам не нужно упорядочивать или поддерживать дублированные имена файлов cookie, ваша таблица cookies может стать словаремof name => value, что позволяет писать это без циклов:

print(cookies["222"]) --> 33233
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...