2009-12-18 14 views
7

que puedo hacer:Seleccionar matriz con múltiples condiciones rubí

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

Lo que si me dan una cantidad desconocida de colores y quiero seleccionar a todos? es decir,

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

He estado trabajando en un lío de código que crea varias matrices temporales y luego se funde o se aplana ellas en una sola, pero estoy muy contento con él.

Respuesta

18

Prueba esto:

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

También podría considerar esto en su lugar, los cambios en el lugar:

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

Impresionante, el segundo es perfecto. –

1

No estoy seguro de entender completamente su pregunta, pero trabajaría para usted?

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