web-dev-qa-db-fra.com

Comment parcourir un tableau à partir du dernier élément? (Rubis)

Je suis venu avec la solution ci-dessous mais je crois que ça doit être plus joli là-bas ... 

array = [ 'first','middle','last']

index = array.length
array.length.times { index -= 1; puts array[index]}
38
Radek
array.reverse.each { |x| puts x }
52
ennuikiller

Ruby est intelligent

a = [ "a", "b", "c" ]
a.reverse_each {|x| print x, " " }
90
allenwei

Vous pouvez même utiliser une boucle for

array = [ 'first','middle','last']
for each in array.reverse do
   print array
end

imprimera

last
middle
first
4
bakerstreet221b

Si vous souhaitez parcourir une plage en sens inverse, utilisez:

(0..5).reverse_each do |i|
  # do something
end
3
divyum

Si vous voulez obtenir le même résultat sans utiliser l'inverse [Parfois, cette question est posée dans des entretiens]. Nous devons utiliser une logique de base.

  1. tableau peut être consulté via index
  2. définir l'index à la longueur du tableau, puis décrémente de 1 jusqu'à ce que l'index atteigne 0
  3. sortie vers screen ou un nouveau tableau ou utilisez la boucle pour exécuter toute logique.

        def reverseArray(input)
          output = []
          index = input.length - 1 #since 0 based index and iterating from 
          last to first
    
          loop do
            output << input[index]
            index -= 1
            break if index < 0
          end
    
          output
        end
    
        array = ["first","middle","last"]
    
        reverseArray array #outputs: ["last","middle","first"]
    
0
Mendy

Dans un modèle de jade, vous pouvez utiliser:

for item in array.reverse()
   item
0
lidox