如何在Lua中获取表格中的最高整数?
2015-7-17 1:21:51
收藏:0
阅读:180
评论:7
如何在 Lua 表中获取最高的整数?
原文链接 https://stackoverflow.com/questions/5178087
点赞
stackoverflow用户642914
`math.max(unpack({1, 2, 3, 4, 5}))`
将数组 {1, 2, 3, 4, 5}
作为参数传递给 unpack
函数并返回其元素,然后再传递给 math.max
函数并返回数组中的最大值。
2011-03-03 11:54:47
stackoverflow用户206020
一个通用的实现方式:
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
2011-03-03 12:17:20
stackoverflow用户282536
Lua自带一个函数用于获取最高的整数键,如果这就是你想要的...
table.maxn
2011-03-07 07:49:51
stackoverflow用户2335481
```
loltable = {1, 2, 3, 4, 1, 2, 37, 1, 0}
table.sort(loltable)
print(loltable[#loltable])
loltable
为一个包含了数字元素的表。对它进行了排序之后,通过 print
函数输出了排序后表的最后一个元素,即最大值。
2013-04-30 10:28:06
stackoverflow用户731940
另一个回答者 @ponzao 的答案很好,但更具体地回答你的问题,如果你只想得到最大的数字(而不是它的索引),我通常会这样做:
function max(a)
local values = {}
for k,v in pairs(a) do
values[#values+1] = v
end
table.sort(values) -- 从最小到最大自动排序
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) -- 从最小到最大自动排序
return values[#values]
end
print(max({1, 2, 3, 4, 1, 2, 37, 1, 0})) --> 37
逻辑如下:
- 创建一个空表格(数组)
- 通过 pairs 迭代所有键(ipairs()在第一个 nil 停止,使用 # 的 for 循环也是如此)
- 将每个值添加到数组中(在第二个代码块中验证类型后)
- 将数组从最高到最低排序
- 返回最后一个元素的值(在排序后,它将位于结尾)。
我知道这是一个老问题,所以问题提出者可能不再需要了,但此页面目前在谷歌上排名靠前,希望这可以帮助其他出现在这个页面上的人。
2015-07-16 19:44:57
stackoverflow用户16816224
你忘记在解包前添加table
像这样:
local save = math.max(table.unpack({1, 2, 3, 4, 5}))
print(save)
如果你想要找到最大或最小的数字,这应该可以工作。
2022-02-18 09:42:38
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
如果您的表是一个数组(只有大于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])