String 如何从表中删除字符串
我一直在想办法从表中删除字符串,就像这样:String 如何从表中删除字符串,string,lua,lua-table,computercraft,String,Lua,Lua Table,Computercraft,我一直在想办法从表中删除字符串,就像这样: myTable = {'string1', 'string2'} table.remove(myTable, 'string1') 但我还是找不到合适的方法。有人能帮忙吗?元素的位置作为其第二个参数。如果您确定string1出现在第一个索引/位置;您可以使用: table.remove(myTable, 1) 或者,您必须使用循环: for k, v in pairs(myTable) do -- ipairs can also be used i
myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')
但我还是找不到合适的方法。有人能帮忙吗?元素的位置作为其第二个参数。如果您确定string1
出现在第一个索引/位置;您可以使用:
table.remove(myTable, 1)
或者,您必须使用循环:
for k, v in pairs(myTable) do -- ipairs can also be used instead of pairs
if v == 'string1' then
myTable[k] = nil
break
end
end
正如hjpotter92所说,
table.remove
需要的是您想要删除的位置,而不是值,因此您必须进行搜索。下面的函数搜索值的位置并使用表格。删除以确保表格保持有效序列
function removeFirst(tbl, val)
for i, v in ipairs(tbl) do
if v == val then
return table.remove(tbl, i)
end
end
end
removeFirst(myTable, 'string1')
这是removeFirst
,没有更好的方法,这是线性时间。lhf的答案是线性时间removeAll
,它可以更新为使用table.move