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

如何在Lua数组中判断指定数字是否存在(避免索引混淆)

正确判断数字是否存在于Lua数组中的方法(不转字符串)

问题原因

你之前用if Array[number] then的写法错误,因为Lua中表的[]操作是按索引取值,而非检查值是否存在。比如你要找数字4时,Array[4]取到的是数组第4个元素15,所以会误判为存在,但实际上4并不是数组里的元素。

解决方案

1. 遍历数组逐个检查(单次查询推荐)

直接遍历数组所有元素,和目标值对比,适合仅需一次查询的场景:

local Array = {1, 8, 10, 15, 20, 30}
local target = 4
local isExist = false

-- 用ipairs遍历数组的顺序元素
for _, val in ipairs(Array) do
    if val == target then
        isExist = true
        break -- 找到目标后提前终止循环,提升效率
    end
end

print(isExist) -- 输出 false

2. 构建值映射表(多次查询推荐)

如果需要多次判断不同数字是否存在,先把数组元素转成以值为键的映射表,后续查询可在O(1)时间内完成:

local Array = {1, 8, 10, 15, 20, 30}
local valueLookup = {}

-- 先构建映射表
for _, val in ipairs(Array) do
    valueLookup[val] = true
end

-- 查询目标值
print(valueLookup[4] or false)  -- 输出 false
print(valueLookup[15] or false) -- 输出 true

这里用元素值作为表的键,和数组的索引完全区分开,不会出现混淆,重复查询时效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:55:13