Ruby Union and Intersection operators
Pipe | (Union) / Ampersand & (Intersection)
&
: intersection OR overlap
The ampersand is an array method that returns the overlapping items.
ary & other_ary → new_ary
Also known as Set Intersection
Returns a new array containing elements common to the two arrays, excluding any duplicates. The order is preserved from the original array.
[ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
[ 'a', 'b', 'b', 'z' ] & [ 'a', 'b', 'c' ] #=> [ 'a', 'b' ]
|
union OR merge and de-duplicate
The pipe is an array method that will merge the two arrays and maintain order(from the first array) if a duplicate exists in the second array.
ary | other_ary → new_ary
Also known as Set Union
Returns a new array by joining ary with other_ary, excluding any duplicates and preserving the order from the original array.
[ "a", "b", "c" ] | [ "c", "d", "a" ] #=> [ "a", "b", "c", "d" ]