在Lua v.5.2中,如何获得两个表的所有字符串的补码?
最理想的是,我希望有一个类似的函数:
table.complement ( t1, t2 )
...其中return是一个表,它是表1和表2中键/值对的补充。也就是说,返回的表只包含两个表中都没有的键。
面对我的用例是NoteCase Pro大纲的脚本,该脚本将在执行将当前节点拆分为多个兄弟的操作之前获取唯一的兄弟节点ID(每个22个字符)的“之前”列表节点,获取兄弟节点ID的新“后”列表,将该列表减少到两个列表的补码,然后将新创建的节点降级为子节点或层次结构中的原始当前节点。
答案 0 :(得分:4)
local function symm_diff(t1, t2)
local t = {}
for k, v in pairs(t1) do
if t2[k] == nil then t[k] = v end
end
for k, v in pairs(t2) do
if t1[k] == nil then t[k] = v end
end
return t
end
答案 1 :(得分:0)
没有任何理由你不能自己写这个......这样的事情?
function table.complement(t1, t2)
local res = {}
for _,v1 in pairs(t1) do
local found = false
for _,v2 in pairs(t2) do
if (v1 == v2) then
found = true
break
end
end
if not found then table.insert(res, v1) end
end
for _,v2 in pairs(t2) do
local found = false
for _,v1 in pairs(t1) do
if (v2 == v1) then
found = true
break
end
end
if not found then table.insert(res, v2) end
end
return res
end
local t1 = {"stuff", "more", "things"}
local t2 = {"stuff", "junk", "things"}
table.foreach(table.complement(t1, t2), print)
打印
1 more
2 junk