Intermediate Algorithm Scripting - Missing letters

Hi there , cant understand why i am not returning undefined for the last test

heres the challange :

heres my code

function fearNotLetter(str) {



let arr= str.split(''); 
let allpresent=true;
console.log(allpresent);

for(let i=0 ;i<arr.length;i++){
  if(str.charCodeAt(i)+1!==(str.charCodeAt(i+1))){
    let char = String.fromCharCode(str.charCodeAt(i)+1);
    console.log(char);
    allpresent=false;
    return char;
    }
    else{console.log(allpresent+i);}
}
if(allpresent){
  return ;
}


  
}

fearNotLetter("abcdefghijklmnopqrstuvwxyz");

passing all tests except '“abcdefghijklmnopqrstuvwxyz” should return undefined

Formatting applied for human readability:

function fearNotLetter(str) {
  let arr = str.split(''); 
  let allpresent = true;
  console.log(allpresent);

  for (let i = 0; i < arr.length; i++) {
    if (str.charCodeAt(i)+1 !== (str.charCodeAt(i+1))) {
      let char = String.fromCharCode(str.charCodeAt(i)+1);
      console.log(char);
      allpresent = false;
      return char;
    } else {
      console.log(allpresent + i);
    }
  }
  if (allpresent) {
    return;
  }
}

fearNotLetter("abcdefghijklmnopqrstuvwxyz");

Can you explain what you have done so far to troubleshoot what’s happening? I see an issue when I run this exact code and test case in the console.

Please provide a link to the Challenge when asking a question: https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/missing-letters

i have double checked that my if statement is correct , i have tried to log char , and allpresent to make sure that 1: char is not logging ergo the condition is evaluating false
2 allpresent is evaluating to true ergo we should return undefined ;

Doesn’t you console show this output?

true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{

What looks odd here?

i replaced ( allpresent+i) with (allpresent, i)

true
true 0
true 1
true 2
true 3
true 4
true 5
true 6
true 7
true 8
true 9
true 10
true 11
true 12
true 13
true 14
true 15
true 16
true 17
true 18
true 19
true 20
true 21
true 22
true 23
true 24
{

n i am getting this which seems more like the output i expect owvere that curly brace is what i imagine the problem is

Ok, so that seems to be coming after you see true 24. That means i is 25 when you are getting the }? This is a problem. Why is this a problem? is i + 1 === 26 a valid index for str?

does { mean anything ??

i thought there might be a problem when i 25 is compared because there is no i 26. but i imagined it would evaluate to false and go to the else statement, which it does but prints the }

i see, its the unicode after ‘z’ it evaluates true.
thank you

1 Like

hi just for clarity could i ask what something is compared to if it is compared to an item outside of the bounds of the array?

hi, thank you very much

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.