I have this table in lua:
local values={"a", "b", "c"}
如果一个变量等于表格中的某个条目,有没有一种方法返回该表格的索引?
local onevalue = "a"
如何在不迭代所有值的情况下获取表格中“a”或onevalue的索引?
没有遍历的方法可以做到那样。
如果你发现自己经常需要这样做,考虑建立一个倒排索引:
local index={}
for k,v in pairs(values) do
index[v]=k
end
return index["a"]
已经接受的答案可行,但还有改进之处:
对于数组:
-- Return the first index with the given value (or nil if not found).
function indexOf(array, value)
for i, v in ipairs(array) do
if v == value then
return i
end
end
return nil
end
print(indexOf({'b', 'a', 'a'}, 'a')) -- 2
对于哈希表:
-- Return a key with the given value (or nil if not found). If there are
-- multiple keys with that value, the particular key returned is arbitrary.
function keyOf(tbl, value)
for k, v in pairs(tbl) do
if v == value then
return k
end
end
return nil
end
print(keyOf({ a = 1, b = 2 }, 2)) -- 'b'
table.find
方法:print(table.find({'a', 'b', 'c'}, 'b'))