Lua返回嵌套表的索引

时间:2014-04-27 16:27:30

标签: lua nested lua-table

这是我第一次尝试使用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”)。

我需要对我在网上看到的内容做些什么,但我很难实现。任何帮助都会受到大力赞赏。

2 个答案:

答案 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