如何从最后一个元素开始遍历数组? (红宝石)

时间:2010-02-27 03:57:09

标签: ruby arrays iteration

我带来了以下解决方案,但我相信那里必须更好......

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

index = array.length
array.length.times { index -= 1; puts array[index]}

6 个答案:

答案 0 :(得分:91)

Ruby很聪明

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

答案 1 :(得分:52)

array.reverse.each { |x| puts x }

答案 2 :(得分:4)

你甚至可以使用for循环

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

将打印

last
middle
first

答案 3 :(得分:3)

如果您想反向迭代一个范围,请使用:

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

答案 4 :(得分:0)

在玉石模板中,您可以使用:

for item in array.reverse()
   item

答案 5 :(得分:0)

如果你想在不使用反向的情况下实现相同的目标[有时这个问题来自采访]。我们需要使用基本逻辑。

  1. 数组可以通过索引
  2. 访问
  3. 将索引设置为数组的长度,然后递减1,直到索引达到0
  4. 输出到屏幕或新数组或使用循环执行任何逻辑。

        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"]