Home > Blockchain >  Why does my for loop return 'undefined' as the last element of a string
Why does my for loop return 'undefined' as the last element of a string

Time:02-14

I was trying to reverse a string using a for loop. The approach I took was to iterate backwards through the entire string, get each separate character of a string in a descending order and then concatenate the reversed characters together in a new, reversed string. However, I encountered a small issue - the string did reverse, but 'undefined' was concatenated at the start.

What am I doing wrong and why this is hapenning? Many thanks for help in advance.

Please, see the code snippet and console for details.

const string = "A quick brown fox jumped over the lazy dog.";
let newStr = "";

for (let i = string.length; i >= 0; i--) {
  let char = string[i];
  newStr  = char;
}

console.log(newStr);

CodePudding user response:

Because array starts from 0 and latest element is accessible by length-1 so the array[length] is equal to writing array[999999]

const string = "A quick brown fox jumped over the lazy dog.";
let newStr = "";

for (let i = string.length-1; i >= 0; i--) {
  let char = string[i];
  newStr  = char;
}

console.log(newStr);
//alternative way
console.log(string.split('').reverse().join(''));

CodePudding user response:

You should start from string.length - 1 since string[string.length] is trying to refer an element out of bounds of the array, hence, evaluates to undefined

const string = "A quick brown fox jumped over the lazy dog.";
let newStr = "";

for (let i = string.length - 1; i >= 0; i--) {
  let char = string[i];
  newStr  = char;
}

console.log(newStr);

  • Related