如果表包含具有特定值的键

Posted

技术标签:

【中文标题】如果表包含具有特定值的键【英文标题】:If table contains a key with specific value 【发布时间】:2014-02-24 12:12:48 【问题描述】:

这可能有点令人困惑,但我有一个表格,例如,名为Ant

此表包含一堆其他(未命名的)表。这些表代表蚂蚁,并保存值。

有点像这样:

Ant = 
  age=3,speed=10,
  age=6,speed=7

我的问题是,如何检查 Ant 表中的任何未命名表是否包含 age 的特定值。

因此,例如,我想检查我的蚂蚁是否年龄为 3 岁。

我希望我已经足够清楚了,在此先感谢!

【问题讨论】:

【参考方案1】:

您可以遍历表格并检查:

for i, v in ipairs(Ant) do
  if v.age == 3 then
    print( i )
  end
end

它会 print the index 存放你 3 岁的蚂蚁

【讨论】:

好吧,如果我有一个母亲的价值观,它需要改变。所以我遍历了所有的蚂蚁,但我只想改变其中的一个。 @DoorKnob 你能举个例子吗?说明情况? @DoorKnob breakprint之后 谢谢,用户说得对。但是,为了澄清起见,假设我的蚂蚁都不是母亲。我想有个妈妈。我不想全部更改,只更改一个。 @DoorKnob 或(应用 SPOT 规则)将 Ant.mother 设置为蚂蚁之一:Ant.mother = Ant[i]。 (Ant 应该是 Ants 来表示一个数组而不是单个实例)【参考方案2】:

如果您只需要检查每个子表中age 的值,构建自定义迭代器是另一种方式:

function age_iter(t)
    local i = 0
    return function() 
               i = i + 1 
               return t[i] and t[i].age 
           end
end

要遍历所有 age 值将是:

for age in age_iter(Ant) do
  print(age)
end

很容易修改它以检查age 值之一是否等于3

【讨论】:

以上是关于如果表包含具有特定值的键的主要内容,如果未能解决你的问题,请参考以下文章

使用 keyof 提取仅具有特定类型值的键的字符串文字联合

具有特定键和值的通用类型

返回具有给定短语(数组)值的键

如何为具有不同数量的键/值对的对象添加类型? [关闭]

在数据库中搜索列中具有特定值的所有表

在数据库中搜索列中具有特定值的所有表