如何使用Lua获取Table中存储的最小数值
问题原因
math.min 本身不接收table类型参数,只能接收多个独立的数值参数,你直接把table传进去肯定无法得到正确结果。
实现方法
方法1:快速实现(仅适用于数组型table)
如果你的table是从1开始连续整数索引的纯数字数组,可以用table.unpack把table拆解成多个独立参数传入math.min,代码示例:
local test_1 = {2, 7, -9, 0, 27, 36, 16} function get_min(t) return math.min(table.unpack(t)) end print(get_min(test_1)) -- 输出结果为 -9
方法2:通用实现(适用于所有table场景)
如果你的table存在非连续索引、自定义key或者可能包含非数字值,更稳妥的方式是遍历table逐个比较取值,逻辑非常容易理解:
- 先取table中第一个数字作为初始最小值
- 遍历table的每一个值,只要当前值比最小值小,就更新最小值
- 遍历完成后得到的就是整个table的最小数值
代码示例:
local test_1 = {2, 7, -9, 0, 27, 36, 16} function get_min(t) local min_val = nil for _, v in pairs(t) do -- 只对比数字类型的值,避免非数字内容导致报错 if type(v) == "number" then min_val = min_val == nil and v or math.min(min_val, v) end end return min_val end print(get_min(test_1)) -- 输出结果为 -9
内容的提问来源于stack exchange,提问作者user1857403
相关产品推荐
相关产品推荐

