javascript - Alert() 在 else 语句中无法正常工作

标签 javascript for-loop if-statement

当我在用户输入中输入与流派 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");
              }
          };

最佳答案

假设您输入Adventure

  1. 您进入循环,index0
  2. genre[0].name Action ,而不是冒险
  3. 所以你返回alert("not a valid generic");
    • 提醒
    • 退出函数(因为 return 就是这样做的)

自从您退出循环后,index 就永远不会增加到 1,并且您永远找不到匹配项。

<小时/>

您需要搜索整个数组,如果没有找到匹配项,则放弃并发出警报并返回。

虽然您可以使用for循环来做到这一点,arrays have a built-in method for doing this :

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

关于javascript - Alert() 在 else 语句中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59678985/

相关文章:

javascript - JS/正则表达式 : How to set group in a regex for multiple replacement?

javascript - 来自 MySQL 的 JSON 提要有效,但不能超过 x 条记录

javascript - Summernote insertImage 触发 onChange

java - 计算并打印文本文件中每个字母的出现次数

无法进入 "if"条件。为什么?

javascript - 使用 requirejs 有选择地加载 AMD 模块

javascript - 在 forEach 循环中访问数据

C# If loop within a for loop within a if loop

java - android java switch 语句中缺少或删除循环周期

php - 使用条件语句循环时出现 fatal error 导致内存耗尽