如何从大型表格LUA中获取最小值之一?

如何检索表中的第一个项目(当所有项目值相等时);如果不相等,则检索值最低的项目,以便我可以将其减去1?

playerElement = {
    { itemName="Ammo clip", value="30" },
    { itemName="Ammo clip", value="30" },
    { itemName="Ammo clip", value="30" },
}
点赞
用户2198692
用户2198692

为了这样做,你需要先扫描整个表,考虑到你表的结构。

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;

附言:我正在路上打字,对任何语法错误感到抱歉。

2014-02-12 18:54:09
用户815672
用户815672

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

local _ = require 'underscore'

-- 在这里定义playerElement表
-- playerElement = {}

-- 创建值表
local values = _.map(playerElement,function(t) return t.value end)

-- 获取最大值和最小值
local max = _.max(values)
local min = _.min(values)

-- 如果所有值都相等,则获取第一个项,否则获取最低值的项
if max == min then
  return playerElement[1]
else
  return _.findWhere(playerElement, {value=tostring(min)})
end
2014-02-12 19:29:38