在Lua表中查找重复的值

问题描述 投票:0回答:1

我有一个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值相同,则它会执行某些操作,而某些操作正确...] >

lua duplicates
1个回答
0
投票

这是一个有趣的解决方案。我在这里假设您不想覆盖任何值:如果得到重复值,则要将其添加到表中并继续前进。为了解决此问题,我将使用'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
© www.soinside.com 2019 - 2024. All rights reserved.