一直专注于战斗逻辑的可玩性,所以一直与table保持了联系.所以我必须对它有一个非常清晰的认识
做数据删除后,很多时候程序运行的结果跟我们想要的结果是不一样的.
我决定重视这个小但十分重要的问题。
以下是我的解决方案
这里的重点是要求该数组删除数据后依然保持key的连续性且始终是从1开始的
*这样也可以保证 ipairs()的正确性 等等
*-- 第一种删除数据方法
这种方法无疑是最好的,先用一个临时表记录要删除的所有key,然后再延迟统一删除.
local a = {11,12,13,13,15,13,13,17,18}
local b = {}
for k,v in pairs(a) do
if v == 13 then
table.insert(b, k)
end
end
table.sort(b,function( d,e)
return d>e
end)
for k,v in pairs(b) do
table.remove(a, v)
end
b = nil
print(unpack(a))
这里的重点是该数组key可以随意指定且可不具备连续性的要求的前提下
– 第二种删除数据方法
local c = {a=11, b=12, c=13, d=13, e=15, f=13,g=13, h=17, j=18}
for k,v in pairs© do
if v == 13 then
c = nil
end
end


我特意在这个电脑上装了下coderRunner测了啊