У вас не правильно реализована проверка. Сначала надо проверить, а уже затем добавлять.
Вот пример реализации:
const coursesSet = {
courses: ['HTML', 'CSS', 'JavaScript', 'React', 'PostgreSQL'],
getCourses() {
return this.courses;
},
addCourse(courseName) {
// Проверяем наличие
if (this.courses.includes(courseName)) {
// есть, сообщаем об этом
return 'Ви вже маєте такий курс';
} else {
// Нету, добавляем
this.courses.push(courseName);
return 'Курс добавлен'
}
},
};
console.log(coursesSet.addCourse('Jue'));
console.log(coursesSet.addCourse('CSS'));
console.log(coursesSet.getCourses());
UPD из комментариев
И еще пара примеров, как можно организовать код:
Из метода addCourse убран лишний else
, т.к. return
прерывает дальнейшее выполнение кода и возвращает результат.
Декомпозиция задач
addItem отвечает за добавление элемента
addCourse2 отвечает за проверку наличия элемента в массиве
const coursesSet = {
courses: ['HTML', 'CSS', 'JavaScript', 'React', 'PostgreSQL'],
getCourses() {
return this.courses;
},
addCourse(courseName) {
if (this.courses.includes(courseName)) return 'Ви вже маєте такий курс';
this.courses.push(courseName);
return 'Курс добавлен'
},
// Два новых метода с декомпозицией задач
addItem(courseName) {
this.courses.push(courseName);
return 'Курс добавлен'
},
addCourse2(courseName) {
return this.courses.includes(courseName) ? 'Ви вже маєте такий курс' : this.addItem(courseName);
},
};
console.log(coursesSet.addCourse('Jue'));
console.log(coursesSet.addCourse('CSS'));
console.log(coursesSet.addCourse2('Vue'));
console.log(coursesSet.addCourse2('CSS'));
console.log(coursesSet.getCourses());