如何在Lua中获取表中的最高整数?
答案 0 :(得分:13)
math.max(unpack({1, 2, 3, 4, 5}))
答案 1 :(得分:4)
loltable = {1, 2, 3, 4, 1, 2, 37, 1, 0}
table.sort(loltable)
print(loltable[#loltable])
答案 2 :(得分:3)
实现此目的的通用功能:
function max(t, fn)
if #t == 0 then return nil, nil end
local key, value = 1, t[1]
for i = 2, #t do
if fn(value, t[i]) then
key, value = i, t[i]
end
end
return key, value
end
使用方法如下:
print(max({1,2,3,4,1,2,37,1,0}, function(a,b) return a < b end)) --> 7 37
答案 3 :(得分:2)
ponzao的另一个答案是好的,但更具体地回答你的问题,如果你只想得到最高的数字(而不是索引),我通常会这样做:
function max(a)
local values = {}
for k,v in pairs(a) do
values[#values+1] = v
end
table.sort(values) -- automatically sorts lowest to highest
return values[#values]
end
print(max({1, 2, 3, 4, 1, 2, 37, 1, 0})) --> 37
为了更进一步,只包括表的数组部分并仅过滤掉数字值(以防止错误),您可以添加一些类型检查:
function max(a)
local values = {}
for k,v in pairs(a) do
if type(k) == "number" and type(v) == "number" then
values[#values+1] = v
end
end
table.sort(values) -- automatically sorts lowest to highest
return values[#values]
end
print(max({1, 2, 3, 4, 1, 2, 37, 1, 0})) --> 37
逻辑如下:
我知道这是一个老问题所以OP可能不再需要这个了,但是这个页面目前在Google上排名很高,所以希望这可以帮助其他人偶然发现这个页面。
答案 4 :(得分:1)
如果你的表是一个数组(只有数字索引&gt; 0),那么使用table.sort并取t[#t]
(但是,这会改变表格)。
其他方法就是这样
m={0,0}
for k,v in pairs(t) do
if m[1]<v then
m[1]=v
m[2]=k
end
end
print("Maximum of "..m[1].." at index "..m[2])
答案 5 :(得分:0)
Lua附带了一个函数来获取最高整数键,如果那就是你想要的......
table.maxn