这是我第一次尝试使用Lua表,我很好地继续使用它。我正在为一件事而苦苦挣扎,我现在的桌子上有一小部分样品:
objects = {
["1/1/1"] = { tl = 1, startVal = 1, stopVal = 0 },
["1/1/2"] = { tl = 11, startVal = 1, stopVal = 0 },
["1/1/3"] = { tl = 22, startVal = 1, stopVal = 0 },
["1/1/4"] = { tl = 33, startVal = 1, stopVal = 0 },
}
典型的操作是我使用“1/1/1”值作为内部表的查找,然后在各种函数中使用这些值。这一切都运作良好。现在,我需要走另一条路,比如我tl = 22
进来,我想返回最高值(在这种情况下为“1/1/3”)。
我想我需要对我在网上看到的内容做些什么,但我很难实现。任何帮助都会受到大力赞赏。
答案 0 :(得分:0)
您无法使用ipairs
,因为您的表是关联数组而不是序列,因此您必须使用pairs
。此外,Lua没有内置搜索功能,因此您必须自己遍历所有项目,寻找正确的字段值:
function findTL(tbl)
for key, data in pairs(tbl) do
if data.tl == tlSearch then
return key
end
end
end
local key = findTL(objects, 22)
如果你想要一些更加面向对象的东西,你可以这样做:
objects.findTL = findTL -- ok because first arg is the table to search
local key = objects:findTL(22)
答案 1 :(得分:-2)
直接取值是不是更好?
objects.1/1/1.tl
我不知道它是否也适用于斜杠,但如果没有,你可以用'x'替换它。然后它将是:
objects.1x1x1.tl