我有两个表,例如:
table1 = { element1, element2, element3, element4 }
table2 = { element1, element3 }
表2引用了table1的某些元素,但是我不知道确切地是哪个元素,也不知道它们的索引。
现在,对于特定元素,我想检查table2是否包含它,并在情况下将其插入/删除。
我想到的第一件事是:
table.remove/insert(table2, table1.elementX)
但是由于插入/删除按索引进行查找,因此无法正常工作。
当然,我可以遍历整个表,直到分别找到并删除元素为止,直到没有匹配的迭代完成并插入为止。
但是,有没有更有效的方法可以做到这一点?
我不想用空字段填充table2来将元素放在匹配索引上。
最佳答案
首先还原table2
table2reverse = {}
for k,v in pairs(table2) do table2reverse[v]=k end
然后执行以下操作:
for k,v in pairs(table1)do
if table2reverse[v] then
table1[k]=nil
end
最后压缩
table1
。
关于lua - table.insert/remove按值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097743/