这里有一个简单的Lua问题:如何找到给定表中最小或最大数字的索引或键。
math.max
/ math.min
仅提供实际的最大或最小数量,而不是密钥。
答案 0 :(得分:4)
迭代表格,并将该值与存储的最大/最小值进行比较。以max为例(假设表是一个序列,即类似数组:
local t = {1, 3, 7, 6, 4, 0}
local key, max = 1, t[1]
for k, v in ipairs(t) do
if t[k] > max then
key, max = k, v
end
end
print(key, max)
输出:
3 7
如果表格不是一个序列,那么会有一点改进:
local t = {four = 4, three = 3, seven = 7, six = 6, one = 1, zero = 0}
local key = next(t)
local max = t[key]
for k, v in pairs(t) do
if t[k] > max then
key, max = k, v
end
end
print(key, max)
在实际代码中,请记住先检查表是否为空。
答案 1 :(得分:1)
function maxkey(initialtable)
local maxval = math.max(unpack(initialtable))
local inv={}
for k,v in pairs(initialtable) do
inv[v]=k
end
return inv[maxval]
end
请参阅以下SO问题: