我有一个字符串表.我想要一种简单的方法来删除表中的所有重复项.
因此,如果表是{a, b, c, c, d, e, e},在此操作之后它将是{a, b, c, d, e}
或者,可能最好是有一种方法可以将一个元素添加到表中,但前提是它还没有包含在表中.
<\noobquestion>
我通常为此做的是索引字符串上的表格,例如
tbl[mystring1] = 1
tbl[mystring2] = 1
Run Code Online (Sandbox Code Playgroud)
等等
添加字符串时,只需使用上面的行,就可以使用重复的字符串.然后,您可以使用for ...对do循环来读取数据.
如果要计算出现次数
使用类似的东西
if tbl[mystring1] == nil then
tbl[mystring1] = 1
else
tbl[mystring1] = tbl[mystring1] + 1
end
Run Code Online (Sandbox Code Playgroud)
如果您需要转动桌子,那么在添加周期结束时您可以简单地使用类似的东西
newtbl = {}
for s,c in pairs(tbl) do
table.insert(newtbl,s)
end
Run Code Online (Sandbox Code Playgroud)
最简单的方法是将表用作“容器表”中的键,而不是值。
让我们调用容器表values。您当前必须执行与此类似的操作才能向其中添加元素:
table.insert(values, value)
Run Code Online (Sandbox Code Playgroud)
你这样解析values:
for i,v in ipairs(values) do
-- v contains the internal values
end
Run Code Online (Sandbox Code Playgroud)
为了只有一次表格,您可以通过其他方式插入它们:
t[value] = 1
Run Code Online (Sandbox Code Playgroud)
这将确保插入的值(字符串、表格、数字等)只包含一次,因为它们将被“覆盖”。
然后你可以这样解析t:
for k,_ in pairs(values) do
-- k contains the internal tables
end
Run Code Online (Sandbox Code Playgroud)