【发布时间】:2013-12-30 03:23:47
【问题描述】:
这里有一个简单的 Lua 问题:如何找到给定表中最小或最大数字的索引或键。
math.max/math.min 只给出实际的最大或最小数字,而不是密钥。
【问题讨论】:
这里有一个简单的 Lua 问题:如何找到给定表中最小或最大数字的索引或键。
math.max/math.min 只给出实际的最大或最小数字,而不是密钥。
【问题讨论】:
迭代表,并将值与存储的最大值/最小值进行比较。以获取最大值为例(假设表是一个序列,即类数组:
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)
在实际代码中,记得先检查表是否为空。
【讨论】:
t[k] 而不仅仅是v?
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 问题:
【讨论】: