Object 从表中返回最大值为lua的对象的名称
我试图用最大值返回对象的名称。让我们假设以下信息:Object 从表中返回最大值为lua的对象的名称,object,lua,max,Object,Lua,Max,我试图用最大值返回对象的名称。让我们假设以下信息: maxTreeHeight = 0 maxTreeName = "" maxLeaveLength = 0 maxLeaveName = "" fruitTab = { oF = { name = "Orange", avgTreeHeight = 32, avgLeaveLength = 0.27 }, aF = { name = "Apple", avgTreeHeight = 10, avgLeaveLength = 0
maxTreeHeight = 0
maxTreeName = ""
maxLeaveLength = 0
maxLeaveName = ""
fruitTab =
{
oF = { name = "Orange", avgTreeHeight = 32, avgLeaveLength = 0.27 },
aF = { name = "Apple", avgTreeHeight = 10, avgLeaveLength = 0.14 },
bF = { name = "Banana", avgTreeHeight = 16, avgLeaveLength = 8.9 },
mF = { name = "Mango", avgTreeHeight = 115, avgLeaveLength = 0.98 }
}
--below in function
for i, v in ipairs(fruitTab) do
if v.avgTreeHeight > maxTreeHeight then
maxTreeHeight = v.avgTreeHeight
maxTreeName = v.name
end
if v.avgLeaveLength > maxLeaveLength then
maxLeaveLength = v.avgLeaveLength
maxLeaveName = v.name
end
end
print(maxLeaveName.." "..maxLeaveLength )
print(maxTreeName.." "..maxTreeHeight)
这种类型的设置是我试图提取所需信息的内容,但函数并不总是给我准确的值(据我所知,具有最大值的名称并不总是正确的)不确定如何使用该代码获得任何结果,除非您的一些输入表是无键的 该函数遍历表的索引,以便与类似数组的表一起使用。相反,您应该使用函数,通过使用迭代表中的每个字段 简单地进行更改就可以从示例代码中得到结果 下面是一些进一步更新的代码:
function get_max (tab)
local maxTreeHeight = 0
local maxTreeName = ""
local maxLeaveLength = 0
local maxLeaveName = ""
for _, v in pairs(tab) do
if v.avgTreeHeight > maxTreeHeight then
maxTreeHeight = v.avgTreeHeight
maxTreeName = v.name
end
if v.avgLeaveLength > maxLeaveLength then
maxLeaveLength = v.avgLeaveLength
maxLeaveName = v.name
end
end
print(maxLeaveName.." "..maxLeaveLength )
print(maxTreeName.." "..maxTreeHeight)
end
local fruitTab = {
oF = { name = "Orange", avgTreeHeight = 32, avgLeaveLength = 0.27 },
aF = { name = "Apple", avgTreeHeight = 10, avgLeaveLength = 0.14 },
bF = { name = "Banana", avgTreeHeight = 16, avgLeaveLength = 8.9 },
mF = { name = "Mango", avgTreeHeight = 115, avgLeaveLength = 0.98 }
}
get_max(fruitTab)
不确定如何使用该代码获得任何结果,除非某些输入表是无键的 该函数遍历表的索引,以便与类似数组的表一起使用。相反,您应该使用函数,通过使用迭代表中的每个字段 简单地进行更改就可以从示例代码中得到结果 下面是一些进一步更新的代码:
function get_max (tab)
local maxTreeHeight = 0
local maxTreeName = ""
local maxLeaveLength = 0
local maxLeaveName = ""
for _, v in pairs(tab) do
if v.avgTreeHeight > maxTreeHeight then
maxTreeHeight = v.avgTreeHeight
maxTreeName = v.name
end
if v.avgLeaveLength > maxLeaveLength then
maxLeaveLength = v.avgLeaveLength
maxLeaveName = v.name
end
end
print(maxLeaveName.." "..maxLeaveLength )
print(maxTreeName.." "..maxTreeHeight)
end
local fruitTab = {
oF = { name = "Orange", avgTreeHeight = 32, avgLeaveLength = 0.27 },
aF = { name = "Apple", avgTreeHeight = 10, avgLeaveLength = 0.14 },
bF = { name = "Banana", avgTreeHeight = 16, avgLeaveLength = 8.9 },
mF = { name = "Mango", avgTreeHeight = 115, avgLeaveLength = 0.98 }
}
get_max(fruitTab)
代码在我看来很好。你能举一个不起作用的实际例子吗?请注意,这些变量是全局变量,因此您不能在不同的表上多次运行此函数并期望结果与您可能期望的结果一致。未知事件导致值疯狂。感谢您的反馈!代码在我看来很好。你能举一个不起作用的实际例子吗?请注意,这些变量是全局变量,因此您不能在不同的表上多次运行此函数并期望结果与您可能期望的结果一致。未知事件导致值疯狂。感谢您的反馈!