按值插入/删除表

Sem*_*pie 5 iteration lua insert lua-table

我有两张表,例如:

table1 = { element1, element2, element3, element4 }
table2 = { element1, element3 }
Run Code Online (Sandbox Code Playgroud)

表2引用了表1的一些元素,但我不知道到底是哪一个,也不知道它们的索引。现在,对于特定元素,我想检查 table2 是否包含它,并将其插入/删除。

我首先想到的是:

table.remove/insert(table2, table1.elementX)
Run Code Online (Sandbox Code Playgroud)

但是由于插入/删除是通过索引进行查找的,所以这是行不通的。当然,我可以遍历整个表,直到找到该元素并将其删除,直到迭代完成但没有匹配为止并插入它。

但是有没有更高效的方法来做到这一点?

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

Sem*_*pie -1

for k,v in pairs(table1)do
  if v == table2[index] then
  table.remove/insert(table1, k)
  break
end
Run Code Online (Sandbox Code Playgroud)

当然这可行,但我仍然希望有一个性能更高的解决方案。由于如果表 1 中有多个 1000 个条目,表 2 中有多个 100 个条目,这将导致 CPU 使用率较高,这是我想避免的。(仅用 200mhz 对控制器进行编程)

  • 您不能在“table1”的遍历中使用“table.insert(table1,x)”,因为它可能会创建新字段。 (2认同)