61 votes

Itérer sur les n premiers éléments d'un tableau

Comment puis-je itérer jusqu'à quatre objets d'un tableau et pas tous ? Dans le code suivant, il s'agit d'une itération sur tous les objets. Je n'ai besoin que des quatre premiers objets.

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

Peut-on le faire comme objects=objects.slice(4) ou l'itération est-elle le seul moyen ?

Editar:

J'ai également besoin d'imprimer combien de fois l'itération se produit, mais ma solution objects[0..3] (grâce aux réponses ici) longue.

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

102voto

Kate Points 1046

Vous pouvez obtenir les n premiers éléments en utilisant

arr = objects.first(n)

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

58voto

Jack Points 61503

J'imagine que le moyen le plus simple serait de

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

p arr;

de sorte qu'avec le [0..3] vous créez un sous tableau contenant seulement les 4 premiers éléments des objets.

19voto

Mladen Jablanović Points 22082

Enumerable#take revient en premier n éléments d'un Enumerable.

5voto

Cort3z Points 1657
arr = objects[0..3]

C'est tout. Vous n'avez pas besoin du reste.

2voto

Kyle Points 13512

Vous pouvez diviser le tableau comme suit objects[0,4]

objects[0,4] dit : commencez à l'index 0 et donnez-moi 4 éléments du tableau.

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

p arr

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X