Подтвердить что ты не робот

Итерация по первым n элементам массива

Как я могу перебирать до четырех объектов массива, а не всех? В следующем коде он выполняет итерацию по всем объектам. Мне нужны только первые четыре объекта.

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

Можно ли это сделать как objects=objects.slice(4), или это итерация единственный способ?

Edit:

Мне также нужно печатать, сколько раз происходит итерация, но мое решение objects[0..3] (спасибо ответам здесь) длинное.

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

Ответ 1

Я предполагаю, что путь rubyst будет идти

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

p arr;

так что с помощью [0..3] вы создадите подмассив, содержащий только первые 4 элемента из объектов.

Ответ 3

Enumerable#take возвращает первые n элементы из Enumerable.

Ответ 4

arr = objects[0..3]

Вот и все. Вам не нужны остальные

Ответ 5

Вы можете сплайсировать массив следующим образом: objects[0,4]

objects[0,4] говорит: начинайте с индекса 0 и дайте мне 4 элемента массива.

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

p arr