table.insert /按值删除

时间:2014-09-29 10:28:39

标签: lua insert iteration lua-table

我有两张桌子,例如:

table1 = { element1, element2, element3, element4 }
table2 = { element1, element3 }

表2引用了table1的一些元素,但我不知道究竟是哪一个,也不知道它们的索引。 现在,对于一个特定元素,我想检查table2是否包含它,并在这种情况下插入/删除它。

跳到我脑海的第一件事是:

table.remove/insert(table2, table1.elementX)

但是由于插入/删除按索引进行查找,这不起作用。 当然,我可以遍历整个表,直到找到元素并分别将其删除,直到Iteration完成而没有匹配并插入它。

但有更高效的方法吗?

我不想用空字段填充table2,以便将元素放在匹配的索引上。

2 个答案:

答案 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