рельсы-Поиск пересечений между несколькими массивами


Я пытаюсь найти значения пересечения между несколькими массивами.

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

Так что результат будет 2

Я знаю, что в PHP вы можете сделать это с array_intersect

Я хотел бы иметь возможность легко добавить дополнительный массив, так что я действительно не хочу использовать несколько циклов

какие идеи ?

Спасибо, Алекс

2 58

2 ответа:

использовать & метод массив, который находится на пересечение множеств.

например:

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

Если вы хотите более простой способ сделать это с массивом массивов неизвестной длины, вы можете использовать инъекционные.

> 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]