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

时间:2010-12-04 15:35:40

标签: lua compression lua-table

我有一个包含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))

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

我让你感到困惑吗? :)

1 个答案:

答案 0 :(得分: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