2009-12-18 6 views
7

je peux faire:sélectionner tableau avec plusieurs conditions ruby ​​

@items = @items.select {|i| i.color == 'blue'} 
@items = @items.select {|i| i.color == 'blue' || i.color == 'red'} 

si je me donne une quantité inconnue de couleurs et je veux les sélectionner? à savoir

['red','blue','green','purple'] 
# or 
['blue','red'] 

Je travaille sur un gâchis de code qui crée plusieurs tableaux temporaires et fusionne ensuite ou les aplatit en un seul, mais je suis vraiment malheureux avec elle.

Répondre

18

Essayez ceci:

colors = ['red','blue','green','purple'] 
@items = @items.select { |i| colors.include?(i.color) } 

Vous pouvez également considérer ce lieu, les changements de place:

@items.reject! { |i| !colors.include?(i.color) } 
+0

Impressionnant, le second est parfait. –

1

pas sûr que je comprends parfaitement votre question, mais travaillerais pour vous?

colors_array = ['blue','red','whatever'] 
@items = @items.select {|i| colors_array.include?(i)} 
Questions connexes