首页 > 解决方案 > Alert() 在 else 语句中无法正常工作

问题描述

当我在我的用户输入中输入与流派 obj 不匹配的随机字符串时,会出现警报。但是,当我输入与警报(无效类型)匹配的有效输入时,仍然会弹出。并且不通过 if 语句。

示例:用户输入:作为有效输入的恐怖应该返回所有电影列表,但仍然会出现警报,说它不是有效的类型。

else 语句出现 if 语句是否等于genre[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");
              }
          };

标签: javascriptfor-loopif-statement

解决方案


假设您输入Adventure

  1. 你进入循环并且index0
  2. genre[0].name是不是冒险的动作
  3. 所以你return alert("not a valid genre");哪个
    • 警报
    • 退出函数(因为那是什么return

由于您退出了循环,index因此永远不会递增到1并且您永远找不到匹配项。


您需要在放弃和警报并返回之前搜索整个数组而不找到匹配项。

虽然您可以使用for循环来执行此操作,但数组具有执行此操作的内置方法

const match = genre.find( 
    element => element.name.toLowerCase() === genreSubmission 
);
if (match) {
    console.log(match.id);
} else {
    return alert("not a valid genre");
}

推荐阅读