ERS
05.Июнь.2022 15:32:02
1
Почему работает код, указанный без фигурных скобок после условия цикла?
let player1={
name: ‘Футболист1’,
goals:1,
passes:4
};
let player2={
name: ‘Футболист2’,
goals:2,
passes:4
};
let player3={
name: ‘Футболист3’,
goals: 3,
passes:4
};
let players = [player1, player2, player3];
let getStatistics = function(players){
let sumGoals = 0;
for (let i=0; i<players.length; i++)
players[i].coefficient=players[i].goals2+players[i].passes;
for (let s=0; s<players.length; s++)
sumGoals+=players[s].goals;
for (let j=0; j<players.length; j++)
players[j].percent=Math.round((players[j].goals 100)/sumGoals);
return players;
};
getStatistics(players);
Это так называемый сокращённый синтаксис цикла.В циклах, подобно конструкциям if, for, фигурные скобки не обязательны. Если их опустить, то цикл выполнит только одну строку под ним. но лучше так не делать, потому что это чревато ошибками.
ERS
08.Июнь.2022 06:57:37
3
Я неправильно поставил вопрос: почему не работает со скобками?
Изначально код был именно с ними.
Пожалуйста, скопируйте ваш код и вставьте его в комментарий (не забудьте про знак </> , чтобы разметка правильно отобразилась), так будет проще разобраться.
kolyan
21.Июль.2022 08:17:17
5
Вот как я сделал :
let players = [];
let getStatistics = function (players) {
let sumGoals = 0;
for (let i = 0; i < players.length; i++) {
players[i].coefficient = players[i].goals2 + players[i].passes;
sumGoals += players[i].goals;
}
for (let j = 0; j < players.length; j++) {
players[j].percent = Math.round(players[j].goals 100/sumGoals);
}
return players;
};
getStatistics(players);
2 лайка
let firstPlayer = {
name: 'Max',
goals: 2,
passes: 3
};
let secondPlayer = {
name: 'Rax',
goals: 3,
passes: 2
};
let listPlayers = [firstPlayer, secondPlayer];
let getStatistics = function (listPlayers) {
// Сумма голов, всех игроков
let sumGoals = 0;
for (let i = 0; i < listPlayers.length; i++) {
sumGoals += listPlayers[i].goals;
}
// Добавляем и считаем coefficient и percent
for (let currentPlayer = 0; currentPlayer < listPlayers.length ; currentPlayer++) {
listPlayers[currentPlayer].coefficient = listPlayers[currentPlayer].goals * 2 + listPlayers[currentPlayer].passes;
listPlayers[currentPlayer].percent = Math.round(100 * listPlayers[currentPlayer].goals / sumGoals);
}
return listPlayers;
};
getStatistics(listPlayers);
let playerOne = {
name: 'Футболист 1',
goals: 0,
passes: 0
}
let playerTwo = {
name: 'Футболист 2',
goals: 0,
passes: 0
}
let players = [playerOne, playerTwo];
let sumOfGoals = 0;
let getStatistics = function (players) {
for (let i = 0; i < players.length; i++) {
sumOfGoals += 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(100 / sumOfGoals * players[i].goals);
};
return players;
};
getStatistics(players);
вот так будет проще
let getStatistics = function (players){
let allGoals = 0;
for(let i = 0; i<players.length; i++){
allGoals += players[i].goals
}
for(let j = 0; j<players.length; j++){
players[j].coefficient = (players[j].goals *2) + players[j].passes;
players[j].percent = Math.round((players[j].goals * 100) / allGoals);
}
return players
};
2 лайка
let firstPlayer = {
name: ‘Глушаков’,
goals: 3,
passes: 5
};
let secondPlayer = {
name: ‘Комбаров’,
goals: 4,
passes: 2
};
let thirdPlayer = {
name: ‘Быстров’,
goals: 10,
passes: 3
};
let igroki = [firstPlayer, secondPlayer, thirdPlayer];
let getStatistics = function (players) {
sumGoals = 0;
for (let j = 0; j < players.length; j++) {
sumGoals += players[j].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 * 100) / sumGoals);
}
return players;
};
getStatistics(igroki);