Three Ways to Reverse a String in JavaScript

Abidemi Oyewole (Demi Oye)
4 min readNov 13, 2024

--

In this article, we’ll walk through three simple ways to reverse a string in JavaScript, diving into the built-in reverse() method, using a for loop, and leveraging the spread operator with reverse(). We’ll explore the pros and cons of each approach so you can decide which method works best for your needs.

Why Reverse a String?

Before we jump in, you might wonder, “Why would I need to reverse a string?” Well, reversing a string can be useful in various scenarios, such as checking for palindromes (words or phrases that read the same backward as forward) or simply altering data for user-facing applications. Let’s see how JavaScript makes it easy to reverse strings in different ways.

Method 1: Using the reverse() Function

The simplest and quickest way to reverse a string in JavaScript is to use the built-in array method reverse(). Although reverse() is designed for arrays, we can make it work for strings with a few additional steps.

Code Example:

let original = "Hello World";
let reversed = original.split('').reverse().join('');
console.log(reversed);  // Output: "dlroW olleH"In this code:
  1. We use split('') to convert the string into an array of characters.
  2. Then, we apply the reverse() method to the array, which flips the order of elements.
  3. Finally, we use join('') to combine the characters back into a single string.

Pros:

  • Quick and Concise: This is a one-liner that can quickly reverse a string with minimal code.
  • Readable: The intent of the code is clear and easy to understand at a glance.

Cons:

  • Modifies the Original Array: Since reverse() changes the array in place, it won’t work if you need to retain the original string in array form.
  • Extra Steps for Strings: Since reverse() only works on arrays, you need to first convert the string to an array and then back to a string, which can feel a bit indirect.

Extra Example: Reversing Only Certain Parts

let phrase = "JavaScript is fun!";
let words = phrase.split(' '); // Splits phrase by spaces
words[1] = words[1].split('').reverse().join(''); // Reverses "is"
let newPhrase = words.join(' ');
console.log(newPhrase);  // Output: "JavaScript si fun!"

In this example, only one word in the phrase is reversed, illustrating the flexibility of split() and join() in combination with reverse().

Method 2: Using a for Loop

If you’d like to avoid converting between arrays and strings, using a for loop gives you complete control over how the string is reversed.

Code Example:

let original = "Hello World";
let reversed = "";
for (let i = original.length - 1; i >= 0; i--) {
reversed += original[i];
}
console.log(reversed); // Output: "dlroW olleH"

In this example:

  1. We start from the end of the string and move backward.
  2. During each iteration, we add the current character to the reversed string.

Pros:

  • Direct String Manipulation: This method doesn’t require converting to an array, so it may feel more straightforward.
  • Intermediate Manipulations: Since we control the iteration, you can add conditional checks or transformations to each character as you go.

Cons:

  • More Code: A loop requires more lines of code than the reverse() method.
  • Extra Variable Needed: You need a reversed variable to store the result, which can slightly increase memory usage.

Extra Example: Adding Custom Conditions

Let’s say we want to reverse the string, but only include alphabetic characters:

let original = "Hello, World!";
let reversed = "";
for (let i = original.length - 1; i >= 0; i--) {
if (/[a-zA-Z]/.test(original[i])) {
reversed += original[i];
}
}
console.log(reversed); // Output: "dlroWolleH"

In this example, we only add alphabetic characters to the reversed string, effectively filtering out non-alphabetic characters like punctuation.

Method 3: Using the Spread Operator and reverse()

The third method combines the power of the spread operator (...) with the reverse() function. This approach gives you the simplicity of reverse() while avoiding the need to call split().

Code Example:

let original = "Hello World";
let reversed = [...original].reverse().join('');
console.log(reversed);  // Output: "dlroW olleH

Here, the spread operator converts the string into an array, much like split(''), allowing you to use reverse() directly on the array and then join('') to return it to a string.

Pros:

  • Concise: Like Method 1, this is a short one-liner.
  • Non-Destructive: Since it doesn’t modify the original string directly, you can reuse original as needed.

Cons:

  • Compatibility Issues: The spread operator isn’t supported in Internet Explorer, so if you’re targeting older browsers, this method may not be suitable.
  • Less Familiar: For beginners, the spread operator might be less intuitive than split().

Extra Example: Reversing Only Letters Using the Spread Operator

let phrase = "JavaScript 101!";
let lettersOnlyReversed = [...phrase].filter(char => /[a-zA-Z]/.test(char)).reverse().join('');
console.log(lettersOnlyReversed);  // Output: "tpircSavaJ"

Here, we filter out any non-alphabetic characters before reversing, then reassemble the reversed characters back into a string.

Final Thoughts

Each method has its unique strengths and weaknesses, so let’s recap:

  1. reverse() Method (Method 1): Best for a quick one-liner but requires converting to an array.
  2. for Loop (Method 2): Offers full control over each character but involves more code.
  3. Spread Operator + reverse() (Method 3): Another concise option, though it may have compatibility issues in older browsers.

Depending on your use case, you might choose one over the others. The reverse() method is ideal for short, one-off reversals, while the for loop offers flexibility if you need additional processing during reversal.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Abidemi Oyewole (Demi Oye)
Abidemi Oyewole (Demi Oye)

Written by Abidemi Oyewole (Demi Oye)

Doctor of Commerce. Author. Technical writer - Tech and Business. Reach out -contactdemithebrand@gmail.com

Responses (1)

Write a response