我对lua来说还很陌生,所以如果这个问题太基础了,请原谅。我想知道是否有一个很好的方法来检查lua表中是否没有值。像这样:
if 5 ~= t[1] or 5 ~= t[2] or 5 ~= t[3] ... then end
但不那么愚蠢。
此
for i,v in ipairs(t) do
if 5 ~= v then
end
end
并不能真正起作用,因为我想检查它是否未在表中的任何位置显示,而不是是否等于任何给定值。
到目前为止,我可能想到的唯一可行的解决方案可能是
check = 0
for i,v in ipairs(t) do
if 5 == v then
check = 1
end
end
if check == 0 then end
但是看起来仍然很麻烦...
非常感谢!
答案 0 :(得分:2)
如果您想知道表中是否有值,则必须将每个表中的值与您的值进行比较,直到找到第一个匹配项为止。
for k,v in pairs(myTable) do
if v == searchValue then
print("Found one!")
break
end
end
请记住,ipairs
仅适用于具有连续索引1-n的表。
如果要检查任何表元素,请使用pairs
。
答案 1 :(得分:1)
如果需要检查数组中是否存在某个项目,则最好将哈希映射保留到该数组。对于每个检查,遍历整个(或部分)数组显然是无效的。我建议您创建映射,然后再进行检查。示例:
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
的恒定时间内一次进行地图构建的测试方法。