2009-12-18 120 views
7

選擇我可以這樣做:陣列與多個條件紅寶石

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

如果我給出的顏色未知量,我想選擇它們呢?即

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

我一直在努力的,創建幾個臨時數組,然後合併或將它們合併爲一個代碼很亂,但我與它真的很不爽。

回答

18

試試這個:

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

您也可能要考慮這個代替,就地變化:

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

太棒了,第二個完美。 – 2009-12-18 06:43:24

1

不知道我完全理解你的問題,但會爲你工作?

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