从中删除值后如何压缩表格?

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

我有一个包含4个值的表。

例如:

2
4
1
3

我使用一个函数来逐步查找表,让我们通过使用对来说出数字1并获取它在表中的位置。

然后我使用table.remove从该位置删除1。我现在要做的是压缩表格,使其长3个值2 4 3

我对LUA很新,所以对我很温柔。 :)

我所拥有的就是这个:

CloseRandomConsole = math.random(1,(#ConsoleTable)) 

If CloseRandomConsole == 1 then 
 for key, value in pairs(ConsoleTable) do 
 if value == "1" then 
  table.remove(ConsoleTable, key) 
 break 
 end 
end 

我知道我哪里出错但我不知道如何解决它。

math.random(1,(#ConsoleTable))

我只希望能够在表格中的一个值之间随机。当我发誓说我想要删除它时,我将留下其他三个随机值。

我让你困惑吗? :)

lua compression lua-table
1个回答
2
投票

你什么意思?

s = {2,4,1,3} -- the table
for k,v in pairs(s) do 
  if v==1 then 
     table.remove(s,k)
  end
end

print(#s) -- is now 3
for k,v in pairs(s) do print(v) end -- just the 3 values ...

@Vitae:当你问什么时,你应该描述你想做什么,而不是你想怎么做 - 尤其是当你不知道自己在做什么时......

也许你想从表中删除一个随机值?然后在随机索引处获取值...

function poprandom( t )
  local idx = math.random(1,#t)
  local ret = t[idx]
  table.remove(t, idx)
  return ret
end
© www.soinside.com 2019 - 2024. All rights reserved.