我在从一个表中移除了一个值之后,如何压缩该表?

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

例如:

2
4
1
3

我使用一个函数通过pairs来遍历表格,查找表格中的数字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))

我只想在表格中的值之间随机选择一个值。而且当我随机该值时,我希望它被删除,这样我就只剩下三个值可以随机选择。

我是否让您感到困惑? :)

原文链接 https://stackoverflow.com/questions/4354278

点赞
stackoverflow用户95612
stackoverflow用户95612

你是什么意思?

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

print(#s) -- 现在是 3
for k,v in pairs(s) do print(v) end -- 只有 3 个值 ...

@Vitae:当你问任何事情时,你应该描述你想做什么,而不是如何做--尤其是当你不知道你在做什么时...

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

function poprandom( t )
  local idx = math.random(1,#t)
  local ret = t[idx]
  table.remove(t, idx)
  return ret
end
2010-12-04 15:52:03