Десятая программа возвращает NaN

var getStatistics = function (players) {
  poleznost(players);
  rezultativnost(players);
  for (var i=0; i<players.length; i++) {
    console.log(players[i]);
  }
  return players;
};

var poleznost = function(players) {
  for (var i=0; i<players.length; i++) {
    var polza = (players[i].goals*2)+players[i].passes;
    players[i].coefficient+=polza;
  }
  return players;
}

var rezultativnost = function(players) {
  var kolvogolov=0;
  for (var i=0; i<players.length; i++) {
    var kolvogolov=players[i].goals;
   
  }

  for (var i=0; i<players.length; i++) {
    var rezultativnost1 = Math.round((players[i].goals*100)/kolvogolov);
    players[i].percent+=rezultativnost1;
  }
  return players;
}

Согласен, код так себе, уровня макаки, так писать нельзя, буду дорабатывать. Но почему программа возвращает NaN? Если я подставляю свои массив объектов, то все работает отлично.

Вот, что на выходе:
{name: “Васька”, goals: 5, passes: 5, coefficient: NaN, percent: NaN} (object)

{name: “Байт”, goals: 12, passes: 2, coefficient: NaN, percent: NaN} (object)

{name: “Снежок”, goals: 2, passes: 7, coefficient: NaN, percent: NaN} (object)

Не +=, а просто =

Спасибо, но почему так? Ведь, используя +=, мы мы присваиваем со сложением. И в обучении показывается именно +=.

Вот вырезка из кода обучения:

var runGame = function (rules, players) {
  for (var currentAttempt = 1; currentAttempt <= rules.maxAttempts; currentAttempt++) {
    for (var i = 0; i < players.length; i++) {
      var throwResult = keks.throwDice(rules.diceNumber, rules.diceNumber * 6);
      players[i].points += throwResult;
      console.log(players[i].name + ' выбросил ' + players[i].points);
    }
  }
  return players;
};

players[i].points += throwResult;
именно присваивание со сложением +=

Кислое с пресным мешаете. В той задаче у каждого игрока было по несколько попыток кинуть кубики.

В футболистах вас просят просто создать новое свойство, которое подцепает значения других свойств этого же объекта. Никуда ничего не накапливается.

Вы же понимаете как работает сокращённая запись? (Что значит “присваивание со сложением”?) Расшифруйте += запись и подумайте, та ли это формула из ТЗ.

Ну и лишние функции это перебор конечно.

сделайте работу над ошибками. вот чуть исправленное.

var getStatistics = function (players) {
poleznost(players);
rezultativnost(players);
for (var i=0; i<players.length; i++) {
console.log(players[i]);
}
return players;
};

var poleznost = function(players) {
for (var i=0; i<players.length; i++) {
var polza = (players[i].goals*2)+players[i].passes;
players[i].coefficient=polza;
}
return players;
}

var rezultativnost = function(players) {
var kolvogolov = 0;
for (var i=0; i<players.length; i++) {
kolvogolov += players[i].goals;

}

for (var i=0; i<players.length; i++) {
var rezultativnost1 = Math.round((players[i].goals*100)/kolvogolov);
players[i].percent=rezultativnost1;
}
return players;
}