【问题标题】:Javascript function returns false when it should be true from an if statement?Javascript函数在if语句中应该为真时返回假?
【发布时间】:2013-09-05 18:04:27
【问题描述】:

我想编写一个函数,它接受一个字母作为参数,如果它是元音则返回 true,否则返回 false。

我设置了一个字母数组并使用 if 语句来获取元音,但该函数返回错误天气它是元音还是辅音?

关于在传递元音时如何让函数返回 true 的任何想法。

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];

function max(ltr) {


for (var item = 0; item < arr.length; item++) {
    if (item == 'a' || item == 'e' || item == 'i' || item == 'o' || item == 'u') {
        return true;
    } else {
    return false;
}
}

}

【问题讨论】:

    标签: javascript if-statement return


    【解决方案1】:

    您的函数所做的是根据元音列表检查数字零,并立即返回false(因为0 不等于任何元音)。它甚至从不看ltr

    你需要修复函数,并将循环移到外面。

    【讨论】:

      【解决方案2】:

      正如其他人所说,您正在将 Int (item) 与字符串进行比较。

      试试这个:

      if (ltr == 'a' || ltr == 'e' || ltr == 'i' || ltr == 'o' || ltr == 'u')
      

      这样您可以跳过整个arr,除非您也出于其他原因使用它。不过,我不知道为什么。

      另一个(更简单的)实现是使用Regular Expressions

      function isVowel(letter) {
          return /^[aeuio]$/.test(letter)
      }
      

      这会测试ltr是否与RegExp匹配,是否为单个字符。

      【讨论】:

        【解决方案3】:

        您正在将 character 与 int ( item) 进行比较 在第一步 item = 0; 它不是一个字符,它返回 false

        【讨论】:

          【解决方案4】:

          item 是 int,你检查它就像它是字符串一样。使用 toString(N) 将其转换为另一个基数或使用 arr[item] 从 arr 获取字母。

          【讨论】:

            【解决方案5】:

            我认为这段代码可以工作:

            var vowelsconsonants = function (vowel,consonant) {
            
            if (vowel.length > 0 && consonant.length > 0) {
              if (vowel === 'a' || vowel === 'e'|| vowel === 'i' || vowel === 'o'  || vowel ==='u') {
                    return true;
              } else {
                    return false;
              }
            } else {
              return false;
            }
            };
            

            试一试……

            【讨论】:

              【解决方案6】:

              您需要使用项目的索引来返回数组中的值,即

              if (arr[item] == 'a' || arr[item] == 'e' || arr[item] == 'i' || arr[item] == 'o' || arr[item] == 'u')
              

              【讨论】:

              • 这将始终返回 true,因为第一个匹配项是 'a'。
              • 这是在上面的上下文中编写的,如原始问题中所述,位于 for 循环中。因此它是正确的。
              猜你喜欢
              • 2016-12-20
              • 1970-01-01
              • 1970-01-01
              • 2013-02-20
              • 1970-01-01
              • 2021-03-04
              • 1970-01-01
              • 2020-01-30
              • 1970-01-01
              相关资源
              最近更新 更多