2014-02-12 21 views
0
playerElement = { 
    { itemName="Ammo clip", value="30" }, 
    { itemName="Ammo clip", value="30" }, 
    { itemName="Ammo clip", value="30" }, 
} 

如何检索表中的第一个项目(当所有项目值相等时),如果不是具有最低值的项目,那么我可以用1减去它?如何从大型表LUA中获取最低值之一?

回答

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

我开始学习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 
相关问题