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)
,因为它可能会创建新字段。