Find Intersection Of Arrays Or Sets Cleanly In Ruby 3
Ruby 3+ provides elegant ways to find common elements between arrays, sets, or enum collections using intersection (&) or Set#intersection. This is especially useful for filtering, authorization checks, tag matching, or data deduplication.
Description
When comparing two or more collections in Ruby, you often want to know what values they share. Ruby’s built-in Array#& method finds intersection values while removing duplicates. For larger datasets or when working with non-array types (like enums or tag lists), the Set class offers better performance and readability using Set#intersection or Set#&.This approach is highly readable, concise, and great for permission checks, shared values, or filtering related records.
Sample input:
user_tags = ["ruby", "rails", "api"]
required_tags = ["graphql", "api", "rails"]
Sample Output:
["rails", "api"]
Answer
# Simple array intersection
common = user_tags & required_tags
# => ["rails", "api"]
# Using Set for performance with large or unsorted data
require 'set'
user_set = Set.new(user_tags)
required_set = Set.new(required_tags)
common = user_set & required_set
or: user_set.intersection(required_set)
# => #<Set: {"rails", "api"}>
Check viewARU - Brand Newsletter!
Newsletter to DEVs by DEVs — boost your Personal Brand & career! 🚀