我有两张桌子,例如:
table1 = { element1, element2, element3, element4 }
table2 = { element1, element3 }
表2引用了table1的一些元素,但我不知道究竟是哪一个,也不知道它们的索引。 现在,对于一个特定元素,我想检查table2是否包含它,并在这种情况下插入/删除它。
跳到我脑海的第一件事是:
table.remove/insert(table2, table1.elementX)
但是由于插入/删除按索引进行查找,这不起作用。 当然,我可以遍历整个表,直到找到元素并分别将其删除,直到Iteration完成而没有匹配并插入它。
但有更高效的方法吗?
我不想用空字段填充table2,以便将元素放在匹配的索引上。
答案 0 :(得分:0)
for k,v in pairs(table1)do
if v == table2[index] then
table.remove/insert(table1, k)
break
end
当然这有效,但我仍然希望有更好的解决方案。 由于table1中有多个1000个entren,而table2中有多个100个entren,这将导致高cpu使用率,我想避免。 (只用200mhz编程控制器)
答案 1 :(得分:0)
首先使用
还原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
。