Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails - Finding intersections between multiple arrays

I am trying to find the intersection values between multiple arrays.

for example

code1 = [1,2,3] code2 = [2,3,4] code3 = [0,2,6] 

So the result would be 2

I know in PHP you can do this with array_intersect

I wanted to be able to easily add additional array so I don't really want to use multiple loops

Any ideas ?

Thanks, Alex

like image 829
Alex Avatar asked Jul 07 '10 17:07

Alex


2 Answers

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

For example:

> [1,2,3] & [2,3,4] & [0,2,6] => [2] 
like image 78
Anurag Avatar answered Sep 24 '22 07:09

Anurag


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] 
like image 25
Fotios Avatar answered Sep 21 '22 07:09

Fotios