迭代数组的前 n 个元素

如何迭代一个数组的四个对象而不是全部对象?在下面的代码中,它遍历所有对象。我只需要前四样东西。

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
69845 次浏览

您可以像这样拼接数组 objects[0,4]

objects[0,4]说: 从索引0开始,给我数组的4个元素。

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


p arr

我想红宝石般的方式会过去

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


p arr;

使用 [0..3]创建一个子数组,其中只包含来自对象的前4个元素。

Enumerable#take 从枚举中返回第一个 n元素。

arr = objects[0..3]

就这样,你不需要休息

可以通过使用

arr = objects.first(n)

Http://ruby-doc.org/core-2.0.0/array.html#method-i-first