Catch Off By One Errors When Using Indexing2

Catch Off By One Errors When Using Indexing2
0.0 0

#1

Tell us what’s happening:

I got the first 2 green ticks but not these

Your code should set the terminal condition of the loop so it stops at the last index.
Your code should fix the terminal condition of the loop so that it stops at 1 before the length.

What am I missing?

Your code so far


function countToFive() {
  let firstFive = "12345";
  let len = firstFive.length;
  // Fix the line below
  for (let i = 0; i <= len; i++) {
  // Do not alter code below this line
    console.log(firstFive[i]);
  }
}

countToFive();

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing


#2

Good try. However read the test cases you are not passing carefully.

You are actually looping through 6 times instead of 5 times. Make sure you fix your condition and you will pass the test. GL!


#3

So I tried

for (let i = 0; i <= len; i+) {

and

for (let i = 0; i = len; i++) {

the last which was almost there. I am missing something but what?


#4

The part in the brackets of a for loop can be divided into three parts, for example in for(a,b,c){ stuff } I’m referring to the a, the b and the c

The first of these, the a is the initialiser, and runs at the very start, once only, to set up the loop

The second of these, the b is the terminal condition. The loop will only continue while this is true

The third of these, the c, runs between every iteration of the loop, this is usually an increment of the loop variable

The problem you’re having with the last part is in the b section - the loop only continues while the statement is true

Can you see why your condition is wrong then?


#5

But shouldn’t it get to 5 and then stop? Since I am incrementing it with +?


#6

and array of length 5 has index values that go from 0 to 4
therefore you want your loop to run when i is 4 but not when it is 5


#7

But I cant change the len statement right? What should I do?


#8

Hello? Not sure what to do next.


#9

@Cyath The above will still iterate when len is equal to 5. The problem is, since a string’s index starts at 0, the console.log(firstFive[i]) would try and reference firstFive[5]. There is not an element at index 5. There are only indexes 0, 1, 2, 3, 4. The index value of 0 is for the “1”, the index value of 1 is for the “2”, the index value of 2 is for the “3”, the index value of 3 is for the “4”, and finally the index value of 4 is for the “5”.

Hint: Think about another comparison operator you have learned other than <= that would not allow a value of 5 for the variable i perform another iteration.

FYI - = is an assignment operator and not a comparison operator and no, even though == and === are comparison operators, they are not what will solve this challenge.