создание метода в классе с добавлением данных в массив js
Задача: Создайте метод addGrade(grade, subject), который будет вносить оценку по соответствующему предмету. При этом grade — оценка, subject — предмет. Условия работы метода: 1)Метод возвращает количество поставленных оценок по данному предмету. 2)Оценка ставится числом в пределах от 1 до 5. 3)При неверной оценке дополнительно выдаётся сообщение с ошибкой, оценка в журнал не заносится. Текущее количество оценок все равно требуется вернуть.
class StudentLog {
constructor(name) {
this.name = name;
this.marks = [];
}
getName() {
return this.name
}
addGrade(grade, subject) {
if (grade > 0 && grade <= 5) {
this.subject.push(grade);
} else {
console.log(`Вы пытались поставить оценку "${grade} "по предмету ${subject}"`);
}
return this.subject.length
}
}
const log = new StudentLog('Олег Никифоров');
console.log(log.addGrade(3, 'algebra'));
// 1
console.log(log.addGrade('отлично!', 'math'));
// Вы пытались поставить оценку "отлично!" по предмету "math". Допускаются только числа от 1 до 5.
// 0
console.log(log.addGrade(4, 'algebra'));
// 2
console.log(log.addGrade(5, 'geometry'));
// 1
console.log(log.addGrade(25, 'geometry'));
// Вы пытались поставить оценку "25" по предмету "geometry". Допускаются только числа от 1 до 5.
// 1
Проверка метода происходит по следующей инструкции: const log = new StudentLog('Олег Никифоров');
console.log(log.addGrade(3, 'algebra')); // 1
console.log(log.addGrade('отлично!', 'math')); // Вы пытались поставить оценку "отлично!" по предмету "math". Допускаются только числа от 1 до 5. // 0
console.log(log.addGrade(4, 'algebra')); // 2
console.log(log.addGrade(5, 'geometry')); // 1
console.log(log.addGrade(25, 'geometry')); // Вы пытались поставить оценку "25" по предмету "geometry". Допускаются только числа от 1 до 5. // 1
Ответы (1 шт):
class StudentLog {
constructor(name) {
this.name = name;
this.marks = {};
}
getName() {
return this.name
}
getTotalCountOfMarks() {
return Object.values(this.marks).reduce((a, b) => a + b.length, 0);
}
addGrade(grade, subject) {
if (grade > 0 && grade <= 5) {
this.marks[subject] || (this.marks[subject] = []);
this.marks[subject].push(grade);
} else {
console.log(`Вы пытались поставить оценку "${grade} "по предмету ${subject}"`);
}
return (this.marks[subject] || { length: 0 }).length;
}
}
const log = new StudentLog('Олег Никифоров');
console.log(log.addGrade(3, 'algebra'));
// 1
console.log(log.addGrade('отлично!', 'math'));
// Вы пытались поставить оценку "отлично!" по предмету "math". Допускаются только числа от 1 до 5.
// 0
console.log(log.addGrade(4, 'algebra'));
// 2
console.log(log.addGrade(5, 'geometry'));
// 1
console.log(log.addGrade(25, 'geometry'));
// Вы пытались поставить оценку "25" по предмету "geometry". Допускаются только числа от 1 до 5.
// 1