Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 返回表中最大或最小数字的键_Lua_Lua Table - Fatal编程技术网

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

Lua 返回表中最大或最小数字的键,lua,lua-table,Lua,Lua Table,这里有一个简单的Lua问题:如何找到给定表中最小或最大数字的索引或键 math.max/math.min只给出实际的最大值或最小值,而不是键 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 见以下问题: 迭

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

math.max
/
math.min
只给出实际的最大值或最小值,而不是键

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
见以下问题:


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

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