How to Reverse a Ruby Array?

To reverse an array in Ruby, you can do the following:

Using Array#reverse

You can use the Array#reverse method to return a new array with the elements in reverse order:

arr = [1, 2, 3, 4, 5]
reversed_arr = arr.reverse

print reversed_arr #=> [5, 4, 3, 2, 1]

If you wish to modify the original array in place, then you can use the Array#reverse! method instead:

arr = [1, 2, 3, 4, 5]
arr.reverse!

print arr #=> [5, 4, 3, 2, 1]

Using a Loop

You can reverse an array using a loop by creating two pointers that swap elements at the opposite ends of the array until you reach the middle. The loop continues until the left pointer crosses the right pointer, at which point the array would be fully reversed. For example, this can be implemented in the following way:

def reverse_array(arr)
  left_pointer = 0
  right_pointer = arr.length - 1

  # loop till the pointers reach the middle
  while left_pointer < right_pointer
    # swap elements at opposite ends
    arr[left_pointer], arr[right_pointer] = arr[right_pointer], arr[left_pointer]
    # increment counters
    left_pointer += 1
    right_pointer -= 1
  end

  arr
end

arr = [1, 2, 3, 4, 5]
reversed_arr = reverse_array(arr)

print reversed_arr #=> [5, 4, 3, 2, 1]

This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.