Module:TableTools: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
better variable name - getUnion deals with all tables, not just arrays |
add getIntersection function |
||
Line 38: | Line 38: | ||
-- |
-- |
||
-- This returns the union of the values of n tables, as an array. For example, for |
-- This returns the union of the values of n tables, as an array. For example, for |
||
-- the tables {1, 3, 4, 5, foo = 7} and {2, 3, 5, |
-- the tables {1, 3, 4, 5, foo = 7} and {2, bar = 3, 5, 6}, getUnion will return |
||
-- {1, 2, 3, 4, 5, 6, 7}. |
-- {1, 2, 3, 4, 5, 6, 7}. |
||
------------------------------------------------------------------------------------ |
------------------------------------------------------------------------------------ |
||
Line 54: | Line 54: | ||
end |
end |
||
table.sort(ret) |
table.sort(ret) |
||
return ret |
|||
end |
end |
||
--[[ |
|||
------------------------------------------------------------------------------------ |
|||
-- getIntersection |
|||
-- |
|||
-- This returns the intersection of the values of n tables, as an array. For |
|||
-- example, for the tables {1, 3, 4, 5, foo = 7} and {2, bar = 3, 5, 6}, |
|||
-- getIntersection will return {3, 5}. |
|||
------------------------------------------------------------------------------------ |
|||
--]] |
|||
function p.getIntersection(...) |
|||
local tables = {...} |
|||
local vals, ret = {} |
|||
local lim = #tables |
|||
for _, t in ipairs(tables) do |
|||
for k, v in pairs(t) do |
|||
local valCount = vals[v] or 0 |
|||
vals[v] = valCount + 1 |
|||
end |
|||
end |
|||
for val, count in pairs(vals) do |
|||
if count == lim then |
|||
ret[#ret + 1] = val |
|||
end |
|||
end |
|||
table.sort(ret) |
|||
return ret |
|||
end |
|||
--[[ |
--[[ |