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

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

math.max/ math.min 只能给出实际的最大或最小数字,而不能给出键。

点赞
用户2962487
用户2962487
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

查看以下 Stack Overflow 问题:

2013-12-29 16:30:26
用户1009479
用户1009479

迭代表格,并将其值与存储的最大/最小值进行比较。以获取最大值为例(假设表格是一个序列,即类似数组:

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)

在实际代码中,请记得首先检查表格是否为空。

2013-12-29 16:37:18