rails - Finding intersections between multiple arrays rails - Finding intersections between multiple arrays arrays arrays

rails - Finding intersections between multiple arrays


Use the & method of Array which is for set intersection.

For example:

> [1,2,3] & [2,3,4] & [0,2,6]=> [2]


If you want a simpler way to do this with an array of arrays of unknown length, you can use inject.

> arrays = [code1,code2,code3]> arrays.inject(:&)                   # Ruby 1.9 shorthand=> [2]> arrays.inject{|codes,x| codes & x } # Full syntax works with 1.8 and 1.9=> [2]


Array#intersection (Ruby 2.7+)

Ruby 2.7 introduced Array#intersection method to match the more succinct Array#&.

So, now, [1, 2, 3] & [2, 3, 4] & [0, 2, 6] can be rewritten in a more verbose way, e.g.

[1, 2, 3].intersection([2, 3, 4]).intersection([0, 2, 6])# => [2][1, 2, 3].intersection([2, 3, 4], [0, 2, 6])# => [2]