Ways to reverse a string in Javascript
- default methods (
split('').reverse().join ('')
) - decremented loop (
var i = str.length-1; i >=0; i--
) - recursion function
String Reversal Using default methods
Reverse a string by using three default or built-in functions:
// str = "world";
function reverseStringVerbose(string) {
// step 1: split the string with String.prototype.split()
let splitStr = string.split(''); // ["w", "o", "r", "l","d"]
//step 2: reverse the new array with Array.prototype.reverse()
let reversedArr = splitStr.reverse(); // ["d", "l", "r", "o","w"]
//step 3: join the reverseArr with Array.prototype.join()
let joinStr = reversedArr.join(''); // "dlrow"
return joinStr;
}
// All together now... (chained)
function reverseString(string) {
return string.split('').reverse().join('');
}
String Reversal Using Decremented Loop
instead of our usual incremental for loop
let i = 0;
: start at 0i < string.length;
: keep going until you reach string lengthi++
: increment i on each iteration
we will use the opposite of this to decrement the for loop
let i = string.length -1;
: start at string.length -1-1
is to match indexing when getting each letter
i >= 0;
: keep going until you reach a number < 0i--
: decrement (count down) i on each iteration
function reverseString(string) {
let reversedString = '';
for (let i = string.length - 1; i >= 0; i--) {
reversedString += string[i];
}
return reversedString;
}
String Reversal Using Recurring Function
function reverseString(string) {
if (string === '') {
// base case to stop looping
return '';
} else {
// recursive case
return reverseString(string.substr(1)) + string.charAt(0);
}
}
reverseString('test');
// keeping all function breakdowns cause who knows what mood my brain will be in when I come back to review
// input: test
// run recurring function on string.substr(1) (string minus the first letter) then add first char in string to end
// (est) + t =>
// (st) + e =>
// (t) + s =>
// () + t =>
// input is empty... base case hit... start returning values
// "" + t => t
// t + s => ts
// ts + e => tse
// tse + t => tset
// (est) + t =>
// (est) + t => (st) + e =>
// (est) + t => (st) + e => (t) + s =>
// (est) + t => (st) + e => (t) + s => () + t =>
// input is empty... base case hit... start returning values
// (est) + t => (st) + e => (t) + s => () + t <= ""
// (est) + t => (st) + e => (t) + s <= t
// (est) + t => (st) + e <= ts
// (est) + t <= tse
// tset
// run recurring function on string.substr(1)
// then add first char (string.charAt(0)) back to the end
// example walk through using input: test
// 1. runRec(test) => return runRec(est) + t;
// 2. runRec(est) => return runRec(st) + e;
// 3. runRec(st) => return runRec(t) + s;
// 4. runRec(t) => return runRec() + t;
// 5. runRec() => return ""; //since nothing was passed
// 6. return "" => return "" + t;
// 7. return t => return t + s;
// 8. return ts => return ts + e;
// 9. return tse => return tse + t;
// 10: return tset; // back at step 1 finished