2012-03-20 15 views
34

मैं सरणी की चार वस्तुओं को कैसे पुन: सक्रिय कर सकता हूं और सभी नहीं? निम्नलिखित कोड में, यह सभी वस्तुओं पर पुनरावृत्त करता है। मुझे केवल पहली चार वस्तुओं की आवश्यकता है।एक सरणी के पहले एन तत्वों पर Iterate

objects = Products.all(); 
arr=Array.new 
objects.each do |obj| 
    arr << obj 
end 
p arr 

यह objects=objects.slice(4) की तरह किया जा सकता है, या एक ही रास्ता यात्रा है?

संपादित करें:

मैं भी मुद्रित करने के लिए कितनी बार यात्रा होता है की जरूरत है, लेकिन मेरे समाधान objects[0..3] (उत्तर देने के लिए धन्यवाद यहाँ) लंबा है।

i=0; 
arr=Array.new 
objects[0..3].each do |obj| 
    arr << obj 
    p i; 
    i++; 
end 
+2

तुम सिर्फ पहले चार वस्तुओं हड़पने के लिए कोशिश कर रहे हैं, या आप पहले चार वस्तुओं से अधिक पुनरावृति करने के लिए कोशिश कर रहे हैं का उपयोग करके पहले n तत्वों प्राप्त कर सकते हैं न ? आप पहली एन ऑब्जेक्ट्स को पकड़ने के लिए 'टेक' विधि का उपयोग कर सकते हैं यदि आप बस उन पर पुन: प्रयास करना चाहते हैं: 'objects.take (4)। प्रत्येक करें ...' –

+1

क्यों नहीं 'arr = Products.limit (4)। to_a' (लेकिन आपको शायद 'to_a' की भी आवश्यकता नहीं है)? जब भी आप खुद को 'Model.all' कह रहे हैं तो आपको फिर से सोचना चाहिए (और फिर तीसरा समय)। –

+1

@Yosef आप चाहते हैं [प्रत्येक_with_index] (http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_index) ... भी, '++' एक नहीं है रूबी ऑपरेटर – Kyle

उत्तर

37

मुझे लगता है कि जिस तरह से rubyst साथ द्वारा

arr=Array.new 
objects[0..3].each do |obj| 
    arr << obj 
end 

p arr; 
तो

कि जाना होगा [0..3] आप एक subarray वस्तुओं से सिर्फ पहले 4 तत्वों से युक्त पैदा करते हैं।

+1

फिर क्यों करें जब 'arr = ऑब्जेक्ट्स [0..3]' वही काम करता है? –

+0

कृपया मेरा संपादन – Yosef

2

आप ब्याह कर सकते हैं इस objects[0,4]

objects[0,4] जैसी सरणी कह रहा है: सूचकांक 0 पर शुरू करने और मुझे सरणी के 4 तत्वों दे।

arr = objects[0,4].inject([]) do |array, obj| 
    array << obj 
end 

p arr 
+1

क्यों 'arrject'' केवल 'arr = ऑब्जेक्ट्स [0,4]' करेगा? –

+0

मुझे लगता है कि ओपी एक सरणी पर फिर से शुरू करना चाहता था और तत्वों को इकट्ठा करने के अलावा कुछ और करना चाहता था। – Kyle

4
arr = objects[0..3] 

सब कुछ है। आप की जरूरत है बाकी

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