11

मैं रूबी 3.2.2 और रूबी 1.9.2 पर रूबी का उपयोग कर रहा हूं।मैं एक बहुआयामी सरणी से एक स्मार्ट तरीके से मूल्यों को "निकालने" कैसे कर सकता हूं?

को देखते हुए निम्नलिखित बहुआयामी Array:

[["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]] 

मैं प्राप्त करना चाहते हैं (टिप्पणी: मैं सभी "नेस्टेड" Array के केवल पहले मान "निकालने" चाहते हैं):

["value1", "value2", "value3"] 

मैं इसे स्मार्ट तरीके से कैसे बना सकता हूं?

+1

के संभावित डुप्लिकेट [n subArrays Sn की किसी सरणी एक, मैं कैसे Sn \ [की सरणी का चयन कर सकते देखते हुए मैं \] रूबी में सदस्यों?] (Http://stackoverflow.com/questions/11120244/दिए गए-ए-एरे-ए-ऑफ-एन-सबैरेज़-स्न-हाउ-कैन-आई-सिलेक्ट-द-एरे-ऑफ-स्निप-सदस्य) –

+0

@ केएल -7 - आप सही हैं, लेकिन मैंने नहीं किया एक नया पोस्ट करने से पहले आपके द्वारा लिंक किया गया प्रश्न नहीं मिला। – user12882

उत्तर

23

बाहरी सरणी के प्रत्येक तत्व के लिए ब्लॉक निष्पादित करने के लिए आप Array#collect का उपयोग कर सकते हैं। पहला तत्व प्राप्त करने के लिए, सरणी को अनुक्रमित करने वाले ब्लॉक को पास करें।

arr.collect {|ind| ind[0]} 

उपयोग में:

 
arr = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]] 
=> [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]] 
arr.collect {|ind| ind[0]} 
=> ["value1", "value2", "value3"] 

के बजाय {|ind| ind[0]}, आप Array#first उपयोग कर सकते हैं प्रत्येक भीतरी सरणी के पहले तत्व प्राप्त करने के लिए:

arr.collect(&:first) 

&:first वाक्य रचना के लिए, पढ़ने के लिए "Ruby/Ruby on Rails ampersand colon shortcut"।

2
>> array = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]] 
=> [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]] 
>> array.map { |v| v[0] } 
=> ["value1", "value2", "value3"] 
+0

स्पष्टीकरण के लिए, 'arr.map' और' arr.collect' के बीच कोई अंतर नहीं है। Http://stackoverflow.com/questions/5254732/difference-between-map-and-collect-in-ruby देखें – forforf

1
arr = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]] 

Solution1 = arr.map {|elem| elem.first} 

Solution2 = arr.transpose[0] 
संबंधित मुद्दे