迭代数组的前n个元素

时间:2012-03-20 02:39:19

标签: ruby arrays

如何迭代最多四个数组对象而不是全部?在以下代码中,它迭代所有对象。我只需要前四个对象。

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

5 个答案:

答案 0 :(得分:83)

您可以使用

获得前n个元素
arr = objects.first(n)

http://ruby-doc.org/core-2.0.0/Array.html#method-i-first

答案 1 :(得分:45)

我猜最红润的方式是

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

p arr;

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

答案 2 :(得分:18)

Enumerable#take返回Enumerable中的第一个n元素。

答案 3 :(得分:4)

arr = objects[0..3]

多数民众赞成。你不需要其余的

答案 4 :(得分:2)

您可以像这样objects[0,4]

拼接数组

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

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

p arr