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

Rod*_*phe 5 lua lua-table

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

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

Yu *_*Hao 4

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

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)
Run Code Online (Sandbox Code Playgroud)

输出:

3       7
Run Code Online (Sandbox Code Playgroud)

如果该表不是序列,则需要进行一些改进:

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)
Run Code Online (Sandbox Code Playgroud)

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