Объясните почему нельзя решить задачу таким образом (указано ниже)?
Вроде логика та же как у верного решения
Сначала функция которая считает сумму.
После вычисляем проценты и коэффициент.
И добавляем в массив текущему игроку с помощью Push.
И если есть возможность такого решения подскажите где ошибка.
TypeError
: players is undefined
let sumGoals = function (players) {
let sum = 0;
for (let i = 0; i < players.length; i++) {
let currentPlayer = players[i];
sum += currentPlayer.goals;
};
return sum;
}
let getStatistics = function (players) {
for (let i = 0; i < players.length; i++) {
let currentPlayer = players[i];
let coefficient = currentPlayer.goals * 2 + currentPlayer.passes;
let percent = Math.round((currentPlayer.goals * 100) / sumGoals());
currentPlayer.push(coefficient, percent);
}
return players;
};
Для проверки программа вызывает функцию getStatistics (как указано в задании), у Вас в данной функции применяется результат первой функции sumGoals, которую Вы вызываете без входного параметра sumGoals(), в данном случае нужно было задать массив players → sumGoals(players).
А также Вы неверное использовали push. Запись в объект происходит по другому (см. Конспект «Объекты». Раздел 1).
1 лайк
про sumGoals спасибо, понял.
про push не совсем. Почитал еще документацию. .push.apply() для слияния массивов. Просто .push() для добавления элементов в массив (строк, чисел) Правильно понял?
а тут просто нужно через += добавлять в currentPlayer.
В объект просто через = добавляем.
А что касаемо push(), то да, все так, для добавления в массив.
1 лайк
let player = {
name: ‘’,
goals: 0,
passes: 0
};
let getStatistics = function (players) {
let team = [];
let sumGoals = 0;
for (let i = 0; i < players.length; i++) {
sumGoals += players[i].goals;
}
for (let i = 0; i < players.length; i++) {
players[i].coefficient = players[i].goals * 2 + players[i].passes;
players[i].percent = Math.round(players[i].goals / sumGoals * 100);
team.push(players[i]);
}
return team;
};