JavaScript Array.reverse() and toReversed() - Reverse Array Order

Learn Array.reverse() for in-place reversal and toReversed() (ES2023) for immutable reversal. Includes string reversal, palindrome checking, and stack patterns. Free reference.

Ordering

Detailed Explanation

Understanding reverse() and toReversed()

Array.reverse()

Reverses the array in place and returns the same array reference:

const arr = [1, 2, 3, 4, 5];
const result = arr.reverse();
// arr: [5, 4, 3, 2, 1]
// result === arr: true (same reference!)

toReversed() (ES2023)

Returns a new reversed array without modifying the original:

const arr = [1, 2, 3, 4, 5];
const reversed = arr.toReversed();
// reversed: [5, 4, 3, 2, 1]
// arr: [1, 2, 3, 4, 5] (unchanged)

Pre-ES2023: Copying Before Reverse

// Spread and reverse
const reversed = [...arr].reverse();

// slice and reverse
const reversed = arr.slice().reverse();

Practical Examples

Reverse a string:

const reversed = "hello".split("").reverse().join("");
// reversed: "olleh"

Note: This approach does not handle Unicode properly. For emoji-safe reversal:

const reversed = [...str].reverse().join("");

Palindrome check:

function isPalindrome(str) {
  const clean = str.toLowerCase().replace(/[^a-z0-9]/g, "");
  return clean === [...clean].reverse().join("");
}
isPalindrome("racecar");    // true
isPalindrome("A man, a plan, a canal: Panama"); // true

Display recent items first:

// Show newest messages at top
const recentFirst = messages.toReversed();

Performance

reverse() is O(n) and operates in-place (no extra memory). toReversed() is also O(n) but allocates a new array. Both are very fast for typical array sizes.

Use Case

Use reverse() when you can safely mutate the array (processing a temporary copy, one-time transformations). Use toReversed() in React state, Redux reducers, or anywhere the original array must remain unchanged. Common for displaying items in reverse chronological order.

Try It — JavaScript Array Methods Reference

Open full tool