我有两张桌子:
a = {customer1:1234, customer2:3456, customer3:4567, customer4:3456}
b = {2345, 1234, 3456, 6789}
我想知道是否有办法比较匹配的表格。如果不是,那么该值将被删除。我无法找到一种与价值观进行比较的方法。
请告诉我如何实现这一目标?
答案 0 :(得分:1)
您可以使用循环逐个元素地比较两个表。
请阅读Lua参考资料。
http://www.lua.org/manual/5.3/manual.html#3.3.4 http://www.lua.org/manual/5.3/manual.html#3.3.5
简单的例子
local a = {1, 2, 3}
for k, v in pairs(a) do
print(v)
end
只需用其他东西替换印刷品。例如,迭代第二个表的另一个循环。使用两个嵌套循环可以将一个表的每个元素与另一个表的所有元素进行比较。你可以做任何你想做的事情!
请注意
a = {customer1:1234}
会导致脚本错误。将:
替换为=
答案 1 :(得分:0)
假设您要从两个表中删除值,我将采用以下方法:
a
并将其值添加到集s_a
b
。如果值在s_a
中,请将其添加到集s_b
,如果不是从b
中删除。s_a = nil; collectgarbage()
释放一些记忆a
并删除您在s_b
我的实施:
local s_a, s_b, iter_b = {}, {}, ipairs(b)
--starting with b because ipairs is a bit cheaper than pairs if done right
for k,v in iter_b do
s_b[v]=true;
end
for k,v in pairs(a) do
if s_b[v] then
s_a[v]=true
else
a[k]=nil
end
end
s_b = nil; collectgarbage()
for k,v in iter_b do
if not s_a[v] then b[k] = nil
end