返回表中最大或最小数字的键

时间:2013-12-29 16:20:30

标签: lua lua-table

这里有一个简单的Lua问题:如何找到给定表中最小或最大数字的索引或键。

math.max / math.min仅提供实际的最大或最小数量,而不是密钥。

2 个答案:

答案 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问题: