lua - table.insert/remove按值

标签 lua insert iteration lua-table

我有两个表,例如:

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


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

我想到的第一件事是:

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


但是由于插入/删除按索引进行查找,因此无法正常工作。
当然,我可以遍历整个表,直到分别找到并删除元素为止,直到没有匹配的迭代完成并插入为止。

但是,有没有更有效的方法可以做到这一点?

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

最佳答案

首先还原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

关于lua - table.insert/remove按值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097743/

相关文章:

lua - Lua 脚本中的奇怪逻辑?

python - 如果 postgresql 不存在(列数和值不同)如何创建动态插入

java - 插入语句中 AUTO_INCREMENT 字段出现问题

java - 迭代实例化类集合的方法调用

java - LinkedHashMap 中带有 JTextField 的 JLabels

c++ - 嵌入 LuaJIT - 创建包含文件夹

linux - Lua 脚本在执行无效的 Linux 命令时无法检测/捕获错误

vb.net - 在 vb.net 中从数据表中打印行的更好方法

nginx - 命中 url 时找不到 404 页面,但从索引页面上的链接打开时正确提供

java - 将字符串添加到某些字符