2012-03-23 11 views
15

नोब सवाल यहाँ! इस तरह एक सरणी के लिएएक सरणी रूबी रेल के भीतर हैश से विशिष्ट मान पुनर्प्राप्त करें

arr = [{id: 1, name: "Pedro"},{id: 2, name: "Pablo"}] 

और चाहते हैं:

ids = [1,2] 

मैं मानचित्र का उपयोग में देखा या इस तरह का चयन करें:

मुझे लगता है कि इस तरह दिखता है हैश के साथ एक सरणी है

ids = arr.each.select{|k,v| "id"==k} 

लेकिन मैं इसे समझ नहीं सकता।

उत्तर

29

निम्नलिखित का प्रयास करें:

ids = arr.map { |x| x[:id] } 
+0

यह काम करता है !!! एक टन निकलास धन्यवाद !! – obi

+4

'arr.map (&: [: id]) जैसे कुछ कैसे आते हैं? – Noz

+2

@ साइकिल: कई कारण: पहला ': [' प्रतीक नहीं है, क्योंकि '[' मान्य पहचानकर्ता नहीं है। दूसरा, आप विधि तर्कों के साथ संयोजन में '&' चाल का उपयोग नहीं कर सकते हैं, क्योंकि सटीक वाक्यविन्यास 'विधि (arg1, arg2, ..., और x)' है, जहां x एक अभिव्यक्ति है जो उस मान का मूल्यांकन करती है जिसमें ' to_proc' विधि। उस 'to_proc' विधि को बुलाया जाता है और परिणामी' Proc' ऑब्जेक्ट 'विधि' में ब्लॉक पैरामीटर के रूप में पारित किया जाता है। –

संबंधित मुद्दे