如何检查值是否不在Lua表中的任何位置?

如何检查值是否不在Lua表中的任何位置?,lua,Lua,我对lua很陌生,所以如果这个问题太基本,请原谅。我想知道是否有一种好方法可以检查lua表中是否没有值。比如: 如果5~=t[1]或5~=t[2]或5~=t[3]。。。然后结束 但不要那么愚蠢 这个 IPAIR(t)do中i、v的 如果5~=v,则 结束 结束 实际上不起作用,因为我想检查它是否显示在表中的任何位置,而不是它是否等于任何给定值 也许到目前为止,我能想到的唯一可行的解决办法是 check=0 对于ipairs(t)do中的i,v 如果5==v,则 检查=1 结束 结束 如果ch

我对lua很陌生,所以如果这个问题太基本,请原谅。我想知道是否有一种好方法可以检查lua表中是否没有值。比如:

如果5~=t[1]或5~=t[2]或5~=t[3]。。。然后结束
但不要那么愚蠢

这个

IPAIR(t)do中i、v的

如果5~=v,则
结束
结束
实际上不起作用,因为我想检查它是否显示在表中的任何位置,而不是它是否等于任何给定值

也许到目前为止,我能想到的唯一可行的解决办法是

check=0
对于ipairs(t)do中的i,v
如果5==v,则
检查=1
结束
结束
如果check==0,则结束
但这看起来还是有点麻烦


非常感谢

如果您想知道某个值是否在表中,您必须将每个表值与您的值进行比较,直到找到第一个匹配项

for k,v in pairs(myTable) do
  if v == searchValue then
    print("Found one!")
    break
  end
end
请记住,
ipairs
仅适用于具有连续索引1-n的表。
如果要检查任何表元素,请使用

如果需要检查数组中是否存在项,最好保留该数组的哈希映射。对于每次检查,遍历整个(或部分)数组显然是无效的。我建议您创建映射,然后再进行检查。例如:

local function array_map(array)
  local map = {}
  for _, item in ipairs(array) do
    map[item] = true
  end
  return map
end

local array = {1,2,3,4,5,6,7}
local arr_map = array_map(array)

if arr_map[1] then 
  print("The array has item 1")
end

if not arr_map[10] then
  print("Item 10 is not part of the array")
end
这就是在地图构建过程中,在
ϑ(1)
+
n
恒定时间内获得测试的方式