Alert () не работает правильно в операторе else - PullRequest
0 голосов
/ 10 января 2020

Когда я ввожу случайную строку в мой пользовательский ввод, который не соответствует жанру obj, появляется предупреждение. Но когда я ввожу действительный ввод, который соответствует предупреждению (не действительный жанр), все равно всплывает. и не go через оператор if.

пример: пользователь вводит: ужас, который является допустимым вводом, должен возвращать весь список фильмов, но вместо этого появляется предупреждение, говорящее, что это не правильный жанр.

приходит оператор else равен ли оператор if жанру [i] .name

$('#submitButton').click(function(){

          reset();

          // getting genre from user
          let genreSubmission = $('#inputSearch').val().toLowerCase();
          let genreId = 0;


          // api genre ids objects to change the api link
          const genre = [
            {
              "id": 28,
              "name": "Action"
            },
            {
              "id": 12,
              "name": "Adventure"
            },
            {
              "id": 16,
              "name": "Animation"
            },
            {
              "id": 35,
              "name": "Comedy"
            },
            {
              "id": 80,
              "name": "Crime"
            },
            {
              "id": 99,
              "name": "Documentary"
            },
            {
              "id": 18,
              "name": "Drama"
            },
            {
              "id": 10751,
              "name": "Family"
            },
            {
              "id": 14,
              "name": "Fantasy"
            },
            {
              "id": 36,
              "name": "History"
            },
            {
              "id": 27,
              "name": "Horror"
            },
            {
              "id": 10402,
              "name": "Music"
            },
            {
              "id": 9648,
              "name": "Mystery"
            },
            {
              "id": 10749,
              "name": "Romance"
            },
            {
              "id": 878,
              "name": "Science Fiction"
            },
            {
              "id": 10770,
              "name": "TV Movie"
            },
            {
              "id": 53,
              "name": "Thriller"
            },
            {
              "id": 10752,
              "name": "War"
            },
            {
              "id": 37,
              "name": "Western"
            }];

          for (let index = 0; index < genre.length; index++) {
              if(genreSubmission === genre[index].name.toLowerCase()){
                genreId = genre[index].id;
                console.log(genreId);
              } else{
                return alert("not a valid genre");
              }
          };

1 Ответ

2 голосов
/ 10 января 2020

Допустим, вы набираете Приключение .

  1. Вы вводите l oop и index равно 0
  2. genre[0].name равно Действие , которое не Приключение
  3. Итак, вы return alert("not a valid genre");, который
    • Оповещения
    • Выход из функции (потому что это то, что return делает)

Поскольку вы вышли из l oop, index никогда не увеличивается до 1 и вы никогда не найдете совпадения.


Вам нужно искать в массиве весь , не находя совпадений, прежде чем сдаваться, получать оповещения и возвращаться.

Пока вы могли бы сделать это с for l oop, массивы имеют встроенный метод для этого :

const match = genre.find( 
    element => element.name.toLowerCase() === genreSubmission 
);
if (match) {
    console.log(match.id);
} else {
    return alert("not a valid genre");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...