Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

As far as I can tell, I am getting the desired result, but I’m being told its wrong.

Your code so far

function getAverage(scores) {
  let sum = 0;

  for (const score of scores) {
    sum += score;
  }

  return sum / scores.length;
}

function getGrade(score) {
  if (score === 100) {
    return "A++";
  } else if (score >= 90) {
    return "A";
  } else if (score >= 80) {
    return "B";
  } else if (score >= 70) {
    return "C";
  } else if (score >= 60) {
    return "D";
  } else {
    return "F";
  }
}

function hasPassingGrade(score) {
  return getGrade(score) !== "F";
}


// User Editable Region

let aveSum = 0;
let result = ". ";
function studentMsg(totalScores, studentScore) {
  aveSum = 0;
  result = " ";
  for (let i = 0; i < totalScores.length; i++) {
    aveSum += totalScores[i];
  }
  if (hasPassingGrade(studentScore) !== true) {
    result = ". You have failed the course.";
  }
  else result = ". You have passed the course.";

  return "Class average: " + aveSum/totalScores.length + ". Your grade: " + getGrade(studentScore) + result;
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));
console.log(studentMsg([56, 23, 89, 42, 75, 11, 68, 34, 91, 19], 100));

// User Editable Region


Your browser information:

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

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Try using the getAverage function you created earlier instead of redoing it. Also remove any extra code after the function (other than the one given at the start). I think you may have added an extra console log statement?

Thanks for the suggestions. I’m getting the same result as before after changing the code to:
let result = " ";
function studentMsg(totalScores, studentScore) {
if (hasPassingGrade(studentScore) !== true) {
result = “. You have failed the course.”;
}
else result = “. You have passed the course.”;

return "Class average: " + getAverage(totalScores) + ". Your grade: " + getGrade(studentScore) + result;
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

You can’t leave these dangling out in the global scope. Then your function can only be used once, which ruins the point of the function

Thanks for the suggestion.

function studentMsg(totalScores, studentScore) {

  let result = ". ";

  if (hasPassingGrade(studentScore) !== true) {
    result = ". You have failed the course.";
  }
  else result = ". You have passed the course.";

  return "Class average: " + getAverage(totalScores) + ". Your grade: " + getGrade(studentScore) + result;
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

i keep getting told that the output is not correct, but it looks like what I am told is the desired output.

This word isn’t in the target phrasing