如何在删除表格后将所有表格下移?

在这段代码中:

t = {
    num = '',
}

t[0].num = '0'
t[1].num = '1'
t[2].num = '2'

有没有一种方式可以删除t[0],然后将所有表格的值下移,使其看起来像这样:

t[0].num = '1'
t[1].num = '2'

带有想象函数的示例:

t = {
    num = '',
}

t[0].num = '0'
t[1].num = '1'
t[2].num = '2'

for i=0,tableLength(t) do
    print(t[i])
end
--输出:012

remove(t[0])

for i=0,tableLength(t) do
    print(t[i])
end
--输出:12

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

点赞
stackoverflow用户8124983
stackoverflow用户8124983

正如在这个回答中所述,通过使用table.unpack的结果创建一个新的表格:

t = {table.unpack (t, 1, #t)}
2021-12-17 22:15:46
stackoverflow用户2858170
stackoverflow用户2858170
t = {
    num = '',
}

t[0].num = '0'
t[1].num = '1'
t[2].num = '2'

这段代码会导致在索引t[0]时出现错误,因为t只有一个字段,即t.num。如果你想创建所需的演示表,需要像这样做:

t = {}
for i = 0, 2 do
  t[i] = {num = tostring(i)}
end

由于Lua中有许多有用的函数假设1-based索引,所以我建议从索引1开始。

local t = {1,2,3,4,5}

选项1:

table.remove(t, 1)

选项2:

t = {table.unpack(t, 2, #t)}

选项3:

t = table.move(t, 2, #t, 1, t)
t[#t] = nil

选项4:

for i = 1, #t-1 do
  t[i] = t[i+1]
end
t[#t] = nil

还有更多选项。我不会列出所有的选项。一些选项会在原地进行,一些选项会导致新的表对象。

2021-12-18 08:43:36