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