在多个 Lua 个列表中搜索项目

Search for an item in multiple Lua lists

我现在正在编写一个脚本,遇到了一个障碍,我无法完全弄清楚如何检查一个值是否在 Lua 中的任何选定表中。

以下问题的示例脚本。

players = {213, 644}
helpers = {632, 965}

-- How would I check if a number (for example 632) was in either of these two tables?

要检查某个值是否在列表中,您需要遍历该列表并将每个元素与您要查找的值进行比较。 如果要对多个列表执行此操作,则需要对每个列表执行此操作。

local lists = {players, helpers}
local foundIn = {}

for _, list in ipairs(lists) do
  for _, v in pairs(list) do
    if v == 632 then
      table.insert(foundIn, list)
      break
    end
  end
end

如果表是静态的或不经常更改,试试这个:

players = {213, 644}
helpers = {632, 965}
present = {}

for k,v in pairs(players) do present[v]=true end
for k,v in pairs(helpers) do present[v]=true end

print(present[632])
print(present[633])

如果您需要知道在何处找到了某个项目,请执行以下操作:

for k,v in pairs(players) do present[v]="players" end
for k,v in pairs(helpers) do present[v]="helpers" end

print(present[632])
print(present[644])

使用这个简单的 table 查找值 _v:

local players = {213, 644}
local helpers = {632, 965}

local function find(t, _v)
    for i, v in pairs(t) do
        local type1 = type(v)
        if type1 == 'table' then
            local value = { find(v, _v) }
            if #value ~= 0 then
                table.insert(value, 2, i)
                return unpack(value)
            end
        elseif i == _v or v == _v then
            return i, v
        end
    end
end

-- Example:
print(find(players, 632) and 'Was finded in table: players') -- nil
print(find(helpers, 632) and 'Was finded in table: helpers') -- 'Was finded...'