В чём проблема моего кода?

var getStatistics = function (players) {
var allGoals = 0;
for (var i = 0; i <= players.length; i++) {
allGoals += players[i].goals;
for (var j = 0; j < players.length; j++) {
players[j].coefficient = players[j].goals * 2 + players[j].passes;
players[j].percent = Math.round(players[j].goals / allGoals * 100);
}
}
return players;
};
ЗЫ: задание 21 из раздела “объекты”, https://htmlacademy.ru/courses/217/run/21

i <= players.length

вот тут поправьте. нельзя пройтись по массиву, вызвав players[players.length].goals, потому что последний элемент массива имеет индекс players.length - 1

ну и еще у вас ОЧЕНЬ много итераций. т.е. внутри цикла с i, запускается и полностью отрабатывается еще один цикл с j, переписывая значения players[j].percent и players[j].coefficient
тут лучше один цикл выделить для расчета allGoals, а второй цикл для дописывания объектов внутри массива (т.е. не вкладывать один цикл в другой).

1 лайк