返回嵌套表的索引的Lua代码

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

认为 我需要利用我在网上看到的 inpairs 做些事情,但我很难实现。任何帮助都将受到极大的赞赏。

点赞
用户869951
用户869951

你不能使用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 -- 因为第一个参数是要搜索的表,所以可以这样做
local key = objects:findTL(22)
2014-04-27 20:08:38
用户1925928
用户1925928

不直接取值会不会更好呢?

objects.1/1/1.tl

我不知道是否也适用斜杠,但如果不行,你可以将其替换为例如 'x'。然后它就会变成:

objects.1x1x1.tl
2014-04-27 20:39:20