2010-08-19 7 views
21

मेरे पास एक सरणी है, मान लीजिए, 500 तत्व। मुझे पता है कि मैं .first(100) कर कर पहले 100 का चयन कर सकता हूं, मेरा सवाल यह है कि मैं 100 से 200 के तत्वों का चयन कैसे करूं?रुबी में किसी दिए गए रेंज में सरणी तत्वों का चयन कैसे करें?

+0

[रूबी में एक सरणी के एक भाग के रिटर्निंग] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/695290/returning-a-part-of-an-array-in-ruby) –

उत्तर

42

आप सरणी सबस्क्रिप्ट में पर्वतमाला का उपयोग कर सकते हैं:

arr[100..200] 
+3

आप ऋणात्मक श्रेणियां भी कर सकते हैं: एआर [100 ..- 50] 500 तत्व सरणी के मामले में, 450 वें तत्व के माध्यम से 100 वां तत्व प्राप्त करेगा। –

+0

अच्छा जवाब, धन्यवाद! :) – Vinozio

-3
new_array = old_array.first(200) - old_array.first(100) 
+0

कि बनाता है समझ :)। मैं सोच रहा था कि इस – deb

+0

के लिए कोई तरीका था या नहीं, वह दो अस्थायी सरणी बनाता है और फिर एक सेट अंतर करता है ... अंतरिक्ष और समय कुशल नहीं, मुझे लगता है। – DarkDust

+0

आपका अधिकार। मैं एक जीत बॉक्स पर हूं और उस पर रूबी नहीं है इसलिए मैं irb में अन्य समाधानों का प्रयास नहीं कर सका। मैंने array.find (100..200) के बारे में भी सोचा लेकिन मुझे नहीं पता कि यह श्रेणियों को स्वीकार करता है या नहीं। कोशिश करके देखो। – s84

2
sample_array = (1..500).to_a 
elements_100_to_200 = sample_array[100..200] 

आप एक सरणी के सूचकांक के रूप में एक सीमा गुजरती हैं और कि subrange से पूछे तत्वों के साथ एक subarray मिल सकती है।

13

आप इस तरह यह कर सकते हैं:

array[100..200] # returns the elements in range 100..200 
# or 
array[100,100] # returns 100 elements from position 100 

More Information

10

dvcolgan के जवाब सही है, लेकिन यह आप की तरह लगता है हो सकता है 100 के समूहों में अपनी सरणी तोड़ने की कोशिश कर रहे हैं। यदि ऐसा है, तो इसके लिए एक सुविधाजनक अंतर्निहित विधि है:

nums = (1..500).to_a 

nums.each_slice(100) do |slice| 
    puts slice.size 
end 

# => 100, 100, 100, 100, 100 
संबंधित मुद्दे