我有一个Lua表,该表会自动生成X和Y值,因此我试图这样做,以便如果X值与表中的另一个X值相同,那么它会执行某些操作,那么现在执行的操作并不重要,我找到的唯一答案是,如果您已经知道表格中的内容,例如“橙色”,“蓝色”,这对我来说就不重要了。
因此,我在表中生成了大量数字,如何检查该表中可能稍后在运行时生成的匹配值。我的x,y值已经四舍五入为2个小数,即:1.10。我的x和y值已经生成到一个表中。
我的代码
开始时,
positiontableX = {} positiontableY = {}
在运行时,
newxpos = math.floor (a[1] * 100)/100 newypos = math.floor (a[2] * 100)/100 table.insert (positiontableX, 1, newxpos) table.insert (positiontableY, 1, newypos)
关于表中正在生成的数据,这是我不需要在此处添加的代码的另一部分。
我有一个Lua表,该表会自动生成X和Y值,因此我试图做到这一点,以便如果X值与表中的另一个X值相同,则它会执行某些操作,而某些操作正确...] >
这是一个有趣的解决方案。我在这里假设您不想覆盖任何值:如果得到重复值,则要将其添加到表中并继续前进。为了解决此问题,我将使用'values as keys' solution立即检查值是否存在(无循环),但使用两个单独的表以免覆盖任何内容。
local positiontableX = {} --an array where values are stored as values
local heldposX = {} --an array where values are stored as indexes
a = {1, 2, 3, 4, 3, 5, 7, 2, 7, 10}
for i = 1, 10 do
local newxpos = math.floor (a[i] * 100)/100
if heldposX[newxpos] == nil then --if this value has never been added yet
print("new x value " .. newxpos)
heldposX[newxpos] = true --add it
else --if this value has been added before
print("duplicate x value " .. newxpos)
end
table.insert (positiontableX, 1, newxpos) --add value to position table
end