web-dev-qa-db-fra.com

rails - Recherche d'intersections entre plusieurs tableaux

J'essaie de trouver les valeurs d'intersection entre plusieurs tableaux.

par exemple

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

Le résultat serait donc 2

Je sais qu'en PHP vous pouvez le faire avec array_intersect

Je voulais pouvoir ajouter facilement un tableau supplémentaire, donc je ne veux pas vraiment utiliser plusieurs boucles

Des idées ?

Merci, Alex

67
Alex

Utilisez la méthode & de Array qui est pour l'intersection définie.

Par exemple:

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

Si vous voulez un moyen plus simple de le faire avec un tableau de tableaux de longueur inconnue, vous pouvez utiliser 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]
45
Fotios