How do I get average of one array and compare it with a value

Viewed 49

So I want to return true if myScore is higher than classScore average but it keeps returning false. This is what I came up with.

function compareScore(classScore, myScore) {

  var classAverage = 0;

  for(var i = 0; i < classScore.length; i++){
    classAverage = (classAverage / classScore.length) + classScore[i];
  };

  if(myScore > classScore){
    return true;
  } else {
    return false;
  }
}

console.log(compareScore([20,20,20],70))
2 Answers

You need to compare classAverage not the array classScore. And also the correct way to calculate average is get sum of array and then divide it by length of array.

In below case you don't need to use if else just simply return the result of logical operation.

function compareScore(classScore, myScore) {
  let classSum = 0;

  for(var i = 0; i < classScore.length; i++){
    classSum += classScore[i];
  };
  let classAverage = classSum/classScore.length
  return myScore > classAverage;
}

console.log(compareScore([20,20,20],70))

Another way of doing that is to use reduce()

const compareScore = (classScore, myScore) => classScore.reduce((ac, a) => ac + a, 0)/classScore.length < myScore

console.log(compareScore([20,20,20],70))

you could youse Array.reduce() to get the sum and go from there.

function compareScore(classScore, myScore) {
      var sum = classScore.reduce((previous, current) => current += previous);
      var average = sum / classScore.length;

      if(myScore > average){
        return true;
      } else {
        return false;
      }
    }

    console.log(compareScore([20,20,20],70))
Related