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

Lua 从表中删除值后,如何压缩表?,lua,compression,lua-table,Lua,Compression,Lua Table,我有一个包含4个值的表 例如: 2 4 1 3 我使用一个函数在表格中单步查找,比如说,通过成对查找数字1,并获得它在表格中的位置 然后我使用table.remove从该位置移除1。我现在想做的是压缩这个表,使它有3个值长 2. 4. 三, 我是LUA的新手,所以对我要温柔。:) 我所拥有的基本上是: CloseRandomConsole = math.random(1,(#ConsoleTable)) If CloseRandomConsole == 1 then for key,

我有一个包含4个值的表

例如:

2
4
1
3
我使用一个函数在表格中单步查找,比如说,通过成对查找数字1,并获得它在表格中的位置

然后我使用table.remove从该位置移除1。我现在想做的是压缩这个表,使它有3个值长 2. 4. 三,

我是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))
我只希望能够在表中的一个值之间随机选择。当我把那个vlue随机化后,我希望它被移除,这样我就剩下三个其他的值来随机化

我把你弄糊涂了吗?:)

你是什么意思

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 ...
@维泰:当你问任何事情时,你应该描述你想做什么,而不是你想怎么做——特别是当你不知道自己在做什么的时候

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

function poprandom( t )
  local idx = math.random(1,#t)
  local ret = t[idx]
  table.remove(t, idx)
  return ret
end

我使用math.random从表中获取一个随机值。我可能做错了tho.CloseRandomConsole=math.random(1,(#ConsoleTable)如果问题不再是问题,请选择一个答案。否则它将继续出现在“未回答的问题”上