首页 > 解决方案 > 如何检查多个 Lua 表是否包含共同值?

问题描述

我有一张表格,例如:

local someTable = {
      idsA = {1, 2, 3, 4},
      idsB = {4, 5, 6, 7},
      idsC = {4, 8, 9, 10}
    }

并且需要检查所有子表中是否存在一个共同的值(在这种情况下 - 4)。

标签: lualua-table

解决方案


查找所有常见索引是一个简单的交集:

t={a={1,2,3},
   b={2,6},
   c={2,4,5}}

function intersect(m,n)
 local r={}
 for x in all(m) do
  for y in all(n) do
   if (x==y) then
    add(r,x)
    break
   end
  end
 end
 return r
end

function common_idx(t)
 local r=nil
 for k,v in pairs(t) do
  if not r then
   r=intersect(v,v)
  else
   r=intersect(r,v)
  end
 end
 return r
end

-- 2
for k,v in pairs(common_idx(t)) do
 print(v)
end

推荐阅读