Доброго времени суток! Знаю, что правильно решить эту задачу можно всего лишь через одну функцию, с двумя циклами в теле и т.д. Но поскольку я изначально решила создать две функции, хочется так эту задачу и решить, пусть это и усложнено.
Подскажите, почему код не работает на пустом массиве и выдает null при расчете percent? Если массив заполнить, то одна проверка проходит.
var players = [];
var getGoals = function (players) {
var goalsSum = 0;
for (var i = 0; i < players.length; i++) {
goalsSum += players[i].goals;
}
return goalsSum;
}
var goalsSum = getGoals(players);
var getStatistics = function (players) {
for (var i = 0; i < players.length; i++) {
players[i].coefficient = players[i].goals * 2 + players[i].passes;
players[i].percent = Math.round(players[i].goals / goalsSum * 100);
}
return players;
};
Добрый вечер!
Скорее проблема в первой строчке, вы изначально задаете пустой массив, этого делать не нужно, так как вы обнуляете массив (делаете его пустым), который программа должна подставить в вашу функцию.
Конечно, вычисления не будут работать без данных, не нужно переопределять значения исходного массива.
Попробовал запустить ваш код.
Скорее, сама работа программы такова, что может передать массив только одной функции.
Как только добавляется вторая функция - выдает ошибку переменной.
@Amirisa Вы почти все правильно сделали))), только вот функцию попытались вызвать не из другой функции, а посередине Вашей программы. вот эту строчку удалите: var players = [];
а вот эту: var goalsSum = getGoals(players); перенесите внутрь Вашей 2-й функции перед циклом for.
Уберите вызов 2-й функции getStatistics(players); - Вы пытаетесь вызвать 2-ю функцию не с аргументом, а с самим параметром. В этой задаче программа сама подставит параметры. В смысле, что здесь вызов функции не нужен.