Метод for...of JS Ecma6
Студентам нужно набрать 70 баллов, чтобы сдать экзамен. Данная программа объявляет массив с результатами. Напишите код для подсчета и вывода в консоль количества студентов, успешно сдавших экзамен.
let scores = [68,95,54,84,77,75,63,74,69,80,71,63]
let passedExam =[];// объявляем массив для сдавших студентов
for (let value of scores){
for (value > 70) { //определяем студентов, набравший проходной балл
passedExam.push; //добавляем сдавших студентов к новому массиву
}
console.log(passedExam.length);// Определяем число сдавших путем вычисления длины массива
}
Подскажите, пожалуйста, что я делаю не так?
Ответы (3 шт):
Вам нужно переписать следующим образом
let scores = [68,95,54,84,77,75,63,74,69,80,71,63]
let passedExam =[];// объявляем массив для сдавших студентов
for (let value of scores){
if(value > 70) { //определяем студентов, набравший проходной балл
passedExam.push(value); //добавляем сдавших студентов к новому массиву
}
}
console.log(passedExam.length);// Определяем число сдавших путем вычисления длины массива
Здесь несколько ошибок:
- опечатка в определении условия (for вместо if)
- сама проверка должна быть >=
- метод push нужно вызывать, и вызывать с аргументом
- консоль лог нужно вынести из цикла
let scores = [68, 95, 54, 84, 77, 75, 63, 74, 69, 80, 71, 63]
let passedExam = [];// объявляем массив для сдавших студентов
for (let value of scores) {
if (value >= 70) { //определяем студентов, набравший проходной балл
passedExam.push(value); //добавляем сдавших студентов к новому массиву
}
}
console.log(passedExam.length);// Определяем число сдавших путем вычисления длины массива
Ну и конечно лучше оформить код как функцию. Да и к алгоритму есть вопросы (например зачем нужен массив "passedExam", можно просто пополнять счетчик):
const commonScores = [68, 95, 54, 84, 77, 75, 63, 74, 69, 80, 71, 63];
const countPassedExam = (scores) => {
let result = 0;
for (let value of scores) {
if (value >= 70) {
result += 1;
}
}
return result;
}
console.log(countPassedExam(commonScores));
Ну и последний этап, JS это высокоуровневый язык, такие ориентированы на удобство чтения кода, циклы это низкоуровневый инструмент, для лучшей "понятности" лучше пользоваться функциями высшего порядка:
const commonScores = [68, 95, 54, 84, 77, 75, 63, 74, 69, 80, 71, 63];
const countPassedExam = (scores) => scores.filter((s) => s >= 70).length;
console.log(countPassedExam(commonScores));
Если использовать for of не обязательно, то можно и покомпактнее:
const passedExam = scores.filter(el => el > 70);