Добрый день, задачу решил, но используя 2 цикла и что-то мне подсказывает, что можно было сделать проще, но как - не могу сообразить, подскажите, как сделать через 1 цикл?
var players = []; /Создаем пустой массив, в который будут подаваться внешние данные/
var getStatistics = function (players) {
var sumGoals = 0; /Тут будет сумма голов/
/Пробегаем по всем элементам массива/
for(var i=0;i<players.length;i++){
/Добавляем в каждый элемент свойство с коэффициентом/
players[i].coefficient = players[i].goals*2+players[i].passes;
/Добавляем в переменную голы каждого футболиста/
sumGoals += players[i].goals;
};
/Теперь, когда у нас есть общее количество голов, мы можем высчитать процент и опять через цикл добавить каждому элементу массива свойство percent/
for(var i=0;i<players.length;i++){
players[i].percent = Math.round((players[i].goals * 100) / sumGoals);
};
return players; /Возвращаем обратно массив/
};
getStatistics(players);
/* Техническое задание
Мяу! Мне нужна программа, которая подсчитает полезность и результативность игроков на основе их статистики. Оформи код в виде функции getStatistics с одним параметром — массивом игроков.
Каждый футболист в этом массиве описывается объектом с тремя полями: имя (свойство name), забитые голы (свойство goals) и голевые пасы (свойство passes).
Функция должна возвращать этот же массив, в котором каждому игроку добавлены ещё два поля: коэффициент полезности по Кексу® (свойство coefficient) и результативность (свойство percent).
Коэффициент полезности считается так: умножаем голы игрока на 2 (потому что я считаю, что голы важнее всего) и прибавляем к этому значению все голевые пасы футболиста.
Результативность (процент забитых мячей футболиста от результата всей команды) считаем так: находим сумму голов всех игроков и выясняем, сколько процентов от этого числа забил каждый футболист. Округляй значение с помощью Math.round().
*/