Lua 表1.1按值插入/删除

Lua 表1.1按值插入/删除,lua,insert,iteration,lua-table,Lua,Insert,Iteration,Lua Table,例如,我有两张桌子: table1 = { element1, element2, element3, element4 } table2 = { element1, element3 } 表2引用了表1中的一些元素,但我不知道具体是哪个元素,也不知道它们的索引。 现在,对于一个特定的元素,我想检查table2是否包含它,并在case中插入/删除它 我想到的第一件事是: table.remove/insert(table2, table1.elementX) 但是由于insert/remov

例如,我有两张桌子:

table1 = { element1, element2, element3, element4 }
table2 = { element1, element3 }
表2引用了表1中的一些元素,但我不知道具体是哪个元素,也不知道它们的索引。 现在,对于一个特定的元素,我想检查table2是否包含它,并在case中插入/删除它

我想到的第一件事是:

table.remove/insert(table2, table1.elementX)
但是由于insert/remove是按索引进行查找的,所以这不起作用。 当然,我可以遍历整个表,直到找到元素并分别删除它,直到迭代完成而不匹配并插入它

但有没有更有效的方法来实现这一点

我不想用空字段填充表2,以便将元素带到匹配索引上

for k,v in pairs(table1)do
  if v == table2[index] then
  table.remove/insert(table1, k)
  break
end
当然这是可行的,但我仍然希望有一个更有效的解决方案。
由于表1中有多个1000入口,表2中有多个100入口,这将导致高cpu使用率,我希望避免这种情况。(仅使用200mhz对控制器进行编程)

第一次还原
表2
使用

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

最后压缩
表1

你到底想用这个解决什么问题?对不起?我想将table1的元素插入/删除到table2,具体取决于它是否已经在表1中。您的意思是table1是一个引用,如果table2不包含table1中的元素,您想将该元素添加到table2,如果table2有一个不在table1中的元素,您想从table1中删除该元素吗?但是如果是这样的话,那么你最终会得到table1=table2,那么你肯定不是想要的,你能澄清一下吗?是的,但是,正如我所说的,只是“针对一个特定的”(来自table1),而不是所有的。我不知道你打算在insert案例中做什么。你的意思是反转?请注意,这会消除重复值(这里似乎不是问题)。您不能在遍历
table1
的过程中使用
table.insert(table1,x)
,因为它可能会创建新字段。