Главная » Работа с функциями (рефакторинг кода задания 3)

Работа с функциями (рефакторинг кода задания 3)


19.03.2021, 23:48

Исходные данные:

1) Перевести все функции в методы объекта personalMovieDB

2) Создать метод toggleVisibleMyDB, который при вызове будет проверять свойство privat. Если оно false - он переключает его в true, если true - переключает в false.
Протестировать вместе с showMyDB.

3) В методе writeYourGenres запретить пользователю нажать кнопку "отмена" или оставлять пустую строку.
Если он это сделал - возвращать его к этому же вопросу. После того, как все жанры введены -
при помощи метода forEach вывести в консоль сообщения в таком виде:
"Любимый жанр #(номер по порядку, начиная с 1) - это (название из массива)"




Код

'use strict';

const personalMovieDB = {
  count: 0,
  movies: {},
  actors: {},
  genres: [],
  privat: false,
  start: function() {
  personalMovieDB.count = +prompt('Сколько фильмов вы уже посмотрели?', '');
   
  while (personalMovieDB.count == '' || personalMovieDB.count == null || isNaN(personalMovieDB.count)) {
  personalMovieDB.count = +prompt('Сколько фильмов вы уже посмотрели?', '');
  }
  },
  rememberMyFilms: function() {
  for (let i = 0; i < 2; i++) {
  const a = prompt('Один из последних просмотренных фильмов?', ''),
  b = prompt('На сколько оцените его?', '');
   
  if (a != null && b != null && a != '' && b != '' && a.length < 50) {
  personalMovieDB.movies[a] = b;
  console.log('done');
  } else {
  console.log('error');
  i--;
  }
  }
  },
  detectPersonalLevel: function() {
  if (personalMovieDB.count < 10) {
  console.log("Просмотрено довольно мало фильмов");
  } else if (personalMovieDB.count >= 10 && personalMovieDB.count < 30) {
  console.log("Вы классический зритель");
  } else if (personalMovieDB.count >= 30) {
  console.log("Вы киноман");
  } else {
  console.log("Произошла ошибка");
  }
  },
  showMyDB: function(hidden) {
  if (!hidden) {
  console.log(personalMovieDB);
  }
  },
  toggleVisibleMyDB: function() {
  if (personalMovieDB.privat) {
  personalMovieDB.privat = false;
  } else {
  personalMovieDB.privat = true;
  }
  },
  writeYourGenres: function() {
  for (let i = 1; i < 2; i++) {
  let genre = prompt(`Ваш любимый жанр под номером ${i}`);

  if (genre === '' || genre == null) {
  console.log('Вы ввели некорректные данные или не ввели их вовсе');
  i--;
  } else {
  personalMovieDB.genres[i - 1] = genre;
  }  
   
  /* Альтернативный вариант */

  let genres = prompt(`Введите ваши любимые жанры через запятую`).toLowerCase();

   if (genres === '' || genres == null) {
   console.log('Вы ввели некорректные данные или не ввели их вовсе');
   i--;
   } else {
  personalMovieDB.genres = genres.split(', ');
   personalMovieDB.genres.sort();
   }  
  }

  personalMovieDB.genres.forEach((item, i) => {
  console.log(`Любимый жанр ${i + 1} - это ${item}`);
  });
  }
};

КОММЕНТАРИИ (0)