'Reverse strings without changing the order of words in a sentence

My Code:

I tried the following code but the order of words are changing

var str = "Welcome to my Website !";

alert(str.split("").reverse().join(""));

It is giving result as

! etisbeW ym ot emocleW

But I need the result as

emocleW ot ym etisbeW !

That is, I don't want to change the order of words.



Solution 1:[1]

You can split on spaces, and then use map to reverse the letters in each word:

alert(str.split(" ").map(function(x) {
    return x.split("").reverse().join("");
}).join(" "));?

Solution 2:[2]

For older browser support you can try this,

var str = "Welcome to my Website !";

String.prototype.str_reverse= function(){
 return this.split('').reverse().join('');
}

var arr = str.split(" ");
for(var i=0; i<arr.length; i++){
 arr[i] = arr[i].str_reverse();
}

alert(arr.join(" ")); //OUTPUT: emocleW ot ym etisbeW !

Solution 3:[3]

I just solved this using a functional approach and typescript:

const  aString = "Our life always expresses the result of our dominant thoughts.";

function reverseString (str: string) :string {
  return  str.split('').reverse().join('')
}

function reverseWords(str:string) :string {
  return str.split(" ").map(reverseString).join(" ")
}

console.log(reverseWords(aString))
// ruO efil syawla sesserpxe eht tluser fo ruo tnanimod .sthguoht

Solution 4:[4]

You can also achieve this using:

[...word].reverse().join('')

Which in my opinion is a little bit cleaner

[...word] - makes an array out of string

.reverse() - reverses the array

.join('') - joins the array into a string

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 McGarnagle
Solution 2 Muthu Kumaran
Solution 3 Josefina
Solution 4 damian-chudziak808