Lua, как получить доступ к индексу, который использует массив - PullRequest
1 голос
/ 16 июня 2020

Как я могу проверить массив внутри индекса? [{4, 8}], чтобы подтвердить, существует ли «призвание» или 8?

local outfits = {
    [7995] = {
            [{1, 5}] = {94210, 1},
            [{2, 6}] = {94210, 1},
            [{3, 7}] = {94210, 1},
            [{4, 8}] = {94210, 1}
    }
}

local item = 7995
local vocation = 8

if outfits[item] then
    local index = outfits[item]
    --for i = 1, #index do
    --  for n = 1, #index[i]
    --  if index[i]
    -- ????
end

1 Ответ

1 голос
/ 17 июня 2020

Вам просто нужно выполнить итерацию, используя pairs, а не базовый c для l oop. С парами вы получаете свои пары ключ-значение, а затем можете l oop поверх ключа, чтобы проверить его содержимое.

local found = 0

if outfits[item] then
    local value = outfits[item]
    for k, v in pairs(value) do
        for n = 1, #k do
            if k[n] == vocation then
                found = k
                break;
            end
        end
    end
end
print(outfits[item][found][1])

Тем не менее, это не очень эффективный метод хранения значений для поиска и не хорошо масштабируется для больших групп записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...