Ошибка, которую вы получаете, вызвана точкой с запятой (;
), которую вы ставите в конце if
Области действия:
if { ... }; else // unexpected token
LE: также, у вас есть ошибка во второй проверьте, что вы присваиваете значение y
для x
. В Javascript сравнения выполняются с ==
или ===
.
Чтобы немного расширить сравнения равенств:
==
попытается привести значения перед выполнением сравнения (например: 1 == '1' => true)
===
- это оператор строгого сравнения, который будет возвращать true, только если оба операнда имеют одинаковый тип и значение (например: 1 === 1 => true, 1 === '1' => false)
Вот рабочий пример вашего кода:
function points(games) {
let p = 0;
games.forEach((game) => {
let x = game.split(':')[0];
let y = game.split(':')[1];
if(x > y) {
p = p + 3;
} else if(x === y) {
p = p + 1;
} else {
p = p + 0;
}
});
};
Ниже вы найдете несколько других примеров.
- Использование расширений массива и отбрасывание ветви, которая добавляет 0 к сумме
function points(coordinates) {
let p = 0;
coordinates.forEach((coordinate) => {
const [x, y] = coordinate.split(':');
if(x > y) {
p = p + 3;
} else if(x === y) {
p = p + 1;
}
});
return p;
};
Мой любимый подход к читабельности:
const points = (coordinates) => coordinates
.map(coordinate => coordinate.split(':'))
.reduce((points, [x, y]) => {
if (x > y) { return points + 3; }
if (x === y) { return points + 1; }
return points;
}, 0);