如何从表中删除字符串

我一直在尝试找到一种从表格中删除字符串的方法,就像这样:

myTable = {'string1', 'string2'}
table.remove(myTable, 'string1')

但我一直没有找到合适的方法。有人可以帮忙吗?

点赞
用户1190388
用户1190388

table.remove 函数接受元素位置作为其第二个参数。如果你确定 string1 出现在第一个索引/位置,你可以使用:

table.remove(myTable, 1)

或者,你必须使用循环:

for k, v in pairs(myTable) do -- ipairs也可以代替pairs
    if v == 'string1' then
        myTable[k] = nil
        break
    end
end
2015-09-27 05:49:50
用户2726734
用户2726734

正如 hjpotter92 所说, table.remove 需要你想要删除的位置而不是值,所以你必须搜索。下面的函数搜索值的位置并使用 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')
2015-09-27 09:53:15