如何从大表LUA获得最低值之一?

时间:2014-02-12 17:03:18

标签: math lua lua-table

playerElement = { 
    { itemName="Ammo clip", value="30" },
    { itemName="Ammo clip", value="30" },
    { itemName="Ammo clip", value="30" },
}

如何检索表格中的第一项(当所有项目值相等时),如果不是具有最低值的项目,那么我可以用1来减去它?

2 个答案:

答案 0 :(得分:1)

根据表的结构,您需要首先扫描整个表格。

local lowestIndex = 0;
local lowestValue = false;
for k, v in ipairs(playerElement) do
    if not lowestValue or v.value < lowestValue then
        lowestIndex = k;
        lowestValue = v;
    end
end

playerElement[lowestIndex].value = lowestValue - 1;

P.S。我在旅途中打字,很抱歉任何语法错误。

答案 1 :(得分:1)

我开始学习Lua并使用underscore-lua库来解决您的问题。

local _ = require 'underscore'

-- here you define the playerElement table
-- playerElement = {}

-- create table of values
local values = _.map(playerElement, function(t) return t.value end)

-- get max and min values
local max = _.max(values)
local min = _.min(values)

 -- get first item when all the values are equal, if not the item with the lowest value
 if max == min then
   return playerElement[1]
 else
   return _.findWhere(playerElement, {value=tostring(min)})
 end