2009-12-18 12 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

बहुत बढ़िया, दूसरा सही है। –

1

यकीन नहीं मैं पूरी तरह से अपने प्रश्न को समझने, लेकिन आप के लिए काम करेंगे?

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