lua中表被删除后会被重新索引,后面的元素会向前移动,这就是为什么循环删除第一个总能删除整个表的原因
for i=1,#tableName do
table.remove(tableName,1)
end
那么问题来了,如果需要在循环遍历表的时候删除某个值,那么接下来的遍历过程就会因为索引被重新排序而破坏
local tableName = {'a','b','c','d','e','f','g'}
for i=1,#tableName do
if i%2 == 0 then
table.remove(tableName,i)
end
end
如果想要访问到全部元素,则需要改变索引
local m = 1
while m<= #tableName do
if m%2 == 0 then
table.remove(tableName,m)
m = m -1
end
m = m +1
end
此时从b到g全部被删除。