在多个 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...'
我现在正在编写一个脚本,遇到了一个障碍,我无法完全弄清楚如何检查一个值是否在 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...'