利用迭代器删除表中元素
例子:将test表中的偶数移除掉
local test = { 2, 3, 4, 8, 9, 100, 20, 13, 15, 7, 11}
for i, v in ipairs( test ) do
if v % 2 == 0 then
table.remove(test, i)
end
end
for i, v in ipairs( test ) do
print(i .. "====" .. v)
end
打印结果:
1====3
2====8
3====9
4====20
5====13
6====15
7====7
8====11
结果偶数8,20还存在。
因为迭代器每删除一个元素,然后的元素自动往前移动。
正确的删除方式:
方式一:从后面往前删除
tb={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
for i=#tb,1,-1 do
if tb[i]%2==0 then
table.remove(tb,i)
end
end
方式二:while遍历
i=1
while i<=#tb do
if tb[i]%2==0 then
table.remove(tb,i)
else
i=i+1
end
end