Làm cách nào tôi có thể lặp lại tối đa bốn đối tượng của một mảng chứ không phải tất cả? Trong đoạn mã sau, nó lặp lại trên tất cả các đối tượng. Tôi chỉ cần bốn vật thể đầu tiên.Lặp lại trên các phần tử n đầu tiên của một mảng
objects = Products.all();
arr=Array.new
objects.each do |obj|
arr << obj
end
p arr
Có thể thực hiện như objects=objects.slice(4)
hoặc lặp lại cách duy nhất không?
Edit:
Tôi cũng cần phải in bao nhiêu lần lặp xảy ra, nhưng giải pháp của tôi objects[0..3]
(nhờ câu trả lời ở đây) dài.
i=0;
arr=Array.new
objects[0..3].each do |obj|
arr << obj
p i;
i++;
end
Bạn chỉ cần cố gắng để lấy bốn đối tượng đầu tiên, hoặc bạn đang cố gắng để lặp qua bốn đối tượng đầu tiên ? Bạn có thể sử dụng phương thức 'take' để lấy các đối tượng n đầu tiên nếu bạn chỉ muốn lặp qua chúng:' objects.take (4) .each do ... ' –
Tại sao không' arr = Products.limit (4). to_a' (nhưng có lẽ bạn thậm chí không cần 'to_a')? Bất cứ khi nào bạn thấy mình nói 'Model.all' bạn nên suy nghĩ lại (và sau đó là lần thứ ba). –
@Yosef bạn muốn [each_with_index] (http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_index) ... cũng, '++' không phải là ruby operator – Kyle