Arrays Lua-如何检查列表是否包含元素

Arrays Lua-如何检查列表是否包含元素,arrays,list,lua,element,Arrays,List,Lua,Element,我需要一些关于我的lua游戏脚本的帮助。我需要检查我在游戏中的库存是否包含列表中的任何id 以下是我的清单: local Game_Items = { {id = 7436, name = "angelic axe", value = 5000}, {id = 3567, name = "blue robe", value = 10000}, {id = 3418, name = "bonelord shield", value = 1200}, {id = 30

我需要一些关于我的lua游戏脚本的帮助。我需要检查我在游戏中的库存是否包含列表中的任何id

以下是我的清单:

local Game_Items = {
    {id = 7436, name = "angelic axe", value = 5000},
    {id = 3567, name = "blue robe", value = 10000},
    {id = 3418, name = "bonelord shield", value = 1200},
    {id = 3079, name = "boots of haste", value = 30000},
    {id = 7412, name = "butcher's axe", value = 18000},
    {id = 3381, name = "crown armor", value = 12000}
}
下面的代码可能看起来有点奇怪,因为你不知道它的用途,但基本上是这样的:上面的列表是我游戏中的物品列表,游戏中有一个可以存放物品的清单。现在我想检查我的清单是否包含这些ID

我试着手动添加两个id,结果成功了,但我的项目列表总共包含500多个项目,我不想把它们全部写出来。有没有办法把整张单子放进去,然后检查它是否在里面

if not table.contains({ 3035, 3043, Game_Items[id] }, tempItemCounter.id) then
这就是我到目前为止所尝试的。这两个第一个id分别是3035和3043,然后我尝试了所有的列表,只检查了id。但是我不知道怎么做。那个代码不起作用。谁能帮我把整个id列表都包括在表中吗

基本上我想把我的整个列表都包括在那一行,而不用手动输入所有ID。 游戏项[id]不应该工作吗?这难道不意味着“游戏项目”中的所有“id”吗


谢谢

不,这并不意味着。如果foo是一个表,那么foo[id]在foo中查找一个字段,该字段调用id所指的任何内容,例如字符串(因此,如果id为1,则得到foo[1],如果id为“bar”,则得到foo.bar,等等)

您不能在一行中完成,但可以创建一个函数,允许您编写if条件。我不确定什么是
tempItemCounter
,但假设您的库存是表单条目的键映射

inventory = {
    [1234] = {....}, 
    [1235] = {....},
    ...
}
其中,每个整数键都是唯一的,并且假设仅当所有项目都在库存中时才希望为true,则可以执行以下操作:

function isAllInInventory(items, inventory)
    for i,item in ipairs(items) do
         if inventory[item.id] == nil
              return false
         end
    end
    return true
end

if isAllInInventory(Game_Items, inventory) then
    ...
end 

你能展示一下你的库存是什么样子的吗?或者它的结构与
Game\u物品的结构相同吗?另外,您是否可以将两者的结构更改为地图而不是数组,例如
Game_Items={[7346]={name=“…”,value=5000},[3567]={name=..},}
?因为如果你做不到,你就必须对每个游戏项目的每个库存项目进行循环。最后,您想知道库存是否包含所有项目,所以即使有一个项目丢失,测试也应该为false吗?