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)

代码在我看来很好。你能举一个不起作用的实际例子吗?请注意,这些变量是全局变量,因此您不能在不同的表上多次运行此函数并期望结果与您可能期望的结果一致。未知事件导致值疯狂。感谢您的反馈!代码在我看来很好。你能举一个不起作用的实际例子吗?请注意,这些变量是全局变量,因此您不能在不同的表上多次运行此函数并期望结果与您可能期望的结果一致。未知事件导致值疯狂。感谢您的反馈!