You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Lua中检查table是否包含多个指定元素?代码失效求助

问题原因

你的inTable函数逻辑有误:它检查的是目标元素是否是table的键(key),但你的table_是数组形式,键是数字索引(1、2),而"A"、"B"是table的值(value),所以t["A"]永远是nil,函数返回false,导致条件不成立。

解决方案

方法1:遍历table检查值

修改inTable函数,遍历table的所有值来判断是否存在目标元素:

function inTable(t, e)
    for _, value in ipairs(t) do
        if value == e then
            return true
        end
    end
    return false
end

-- 示例测试
local table_ = {"A","B"}

if inTable(table_, "A") and inTable(table_, "B") then
    print("table同时包含A和B")
    -- 执行你的业务逻辑
end
  • 用ipairs遍历适合连续数字索引的数组型table,效率更高;如果你的table可能包含非数字索引的键,可替换为pairs遍历所有键值对。

方法2:转哈希表快速查找(适合多次检查场景)

如果需要频繁检查元素是否存在,可以先把数组转成以元素值为键的哈希表,后续查找时间复杂度为O(1):

local table_ = {"A","B"}
-- 预转哈希表
local valueMap = {}
for _, v in ipairs(table_) do
    valueMap[v] = true
end

-- 直接通过键查找
if valueMap["A"] and valueMap["B"] then
    print("table同时包含A和B")
    -- 执行你的业务逻辑
end

内容的提问来源于stack exchange,提问作者unwritten_k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:10:06