5

我一直在尝试找到一种方法从表格中删除字符串,如下所示:

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

但我无论如何都找不到这样做。有人可以帮忙吗?

4

2 回答 2

4

正如 hjpotter92 所说,table.remove期望您要删除的位置而不是值,因此您必须进行搜索。下面的函数搜索 value 的位置并用于table.remove确保 table 将保持有效序列。

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-27T09:53:15.717 回答
2

table.remove接受元素的位置作为其第二个参数。如果您确定它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
于 2015-09-27T05:49:50.640 回答