Lua 迭代表中的表
我有一个表Lua 迭代表中的表,lua,Lua,我有一个表localcookies={{[“name”]=23、[“value”]=333}、{[“name”]=222、[“value”]=33233},我想迭代子表以找到一个具有正确“name”的子表。这是我试过的 for _,elm in ipairs(cookies) do for k,v in ipairs(elm) do print(k) if k == "name" and v == 222 then print(v)
localcookies={{[“name”]=23、[“value”]=333}、{[“name”]=222、[“value”]=33233}
,我想迭代子表以找到一个具有正确“name”的子表。这是我试过的
for _,elm in ipairs(cookies) do
for k,v in ipairs(elm) do
print(k)
if k == "name" and v == 222 then
print(v)
end
end
end
我确实在表的外部for循环中显示了它,但是,它甚至没有进入内部for循环-为什么?如何找到“name”等于某个值的子表?
ipairs
只迭代键1、2、3,…,因此它不会访问键“name”
。如果要访问所有键,请使用对
(尽管要注意,迭代顺序是不可预测的)
然而,对于您的示例,您根本不需要内部循环。您可以简单地将elm的名称设置为elm.name
:
for _,elm in ipairs(cookies) do
if elm.name == "222" then
print(elm.name, elm.value)
end
end
事实上,如果您不需要排序或需要支持重复的cookie名称,您的cookies
表可能会成为name=>value的字典,允许您编写此表而不需要循环:
print(cookies["222"]) --> 33233
尝试使用
对而不是内部ipairs
来代替ipairs
中的“i”代表整数,或者更具体地说,代表正整数键,最多不包括第一个“缺少的”键(cookies[k]==nil
)。即使重复的cookies也可以作为name=>[values]
的dict来完成,尽管这仍然会失去顺序。