Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript检查字符是否为元音_Javascript_Character - Fatal编程技术网

Javascript检查字符是否为元音

Javascript检查字符是否为元音,javascript,character,Javascript,Character,我已经看了很多与我相关的问题,但它们都使用了不同的方法,我必须使用的方法。我知道这是一个非常冗长的方法来找出什么时候有更简单的方法,但我只是按照指示 为什么下面的代码不起作用?该函数检查它是否为元音。 然后检查输入的长度是否为1。如果是1,则调用函数。如果大于1,则请求另一个输入,直到长度为1 我现在明白了,布尔值在JS中并不存在。我猜这个问题现在无效了 function isVowel(x){ boolean result; if(x == "A" || x ==

我已经看了很多与我相关的问题,但它们都使用了不同的方法,我必须使用的方法。我知道这是一个非常冗长的方法来找出什么时候有更简单的方法,但我只是按照指示

为什么下面的代码不起作用?该函数检查它是否为元音。 然后检查输入的长度是否为1。如果是1,则调用函数。如果大于1,则请求另一个输入,直到长度为1

我现在明白了,布尔值在JS中并不存在。我猜这个问题现在无效了

function isVowel(x){

    boolean result;

        if(x == "A" || x == "E" || x == "I" || x == "O" || x == "U" ) {
            result = true;
        }
        else{
            result = false;
        }
    return result;
    }

    var input;


    input = prompt("Enter a character ");
    input = input.toUpperCase();
    if(input.length == 1){
        isVowel(input);
        }
    }
    else{
        while(input.length != 1){
            prompt("Enter a character ");
            if(input.length == 1){
                isVowel(input);
            }
        }
    }

    alert(isVowel(input));

您在三个位置调用了
isVowel
,并在前两个位置丢弃了返回值。如果要在前两个位置查看返回值,请显示它(通过上一个示例中的
alert
或其他任何方式)

还有其他问题:

  • 由于使用了
    boolean
    而不是
    var
    ,因此代码不会解析

  • 任何时候你发现自己在写:

    var result;
    if (condition) {
        result = true;
    } else {
        result = false;
    }
    return result;
    
    …停下来,让它:

    var result = condition;
    return result;
    
    所以对于
    isvore

    function isVowel(x) {
    
        var result;
    
        result = x == "A" || x == "E" || x == "I" || x == "O" || x == "U";
        return result;
    }
    
    (当然,您可以将其设置为一行程序,但这样更容易调试。)

  • if
    块之后有一个额外的
    }
    (合理、一致的格式会使这一点变得明显)

  • 您的
    while
    循环将永远不会结束,因为您永远不会使用
    提示符的返回值更新
    输入

  • 使用
    do while

这里有一个更新的版本,仅包含这些更改

函数是元音(x){
var结果;
结果=x==“A”| x==“E”| x==“I”| x==“O”| x==“U”;
返回结果;
}
var输入;
做{
输入=提示(“输入字符”);
if(input.length==1){
警报(IS元音(输入));
}

}while(input.length!=1)无论大小写都可以尝试此函数

函数是元音(x){return/[aeiouAEIOU]/.test(x);}
var输入=“”;
while(input.length!=1){
输入=提示(“输入字符”);
}

警报(IS元音(输入))以简单方式检查给定字符串是否包含元音

var input = "kad aeiou";
function vowvelOrNot(input){
  var str = input.toLowerCase();
  if(str.length > 0){
    for(i=0; i <= str.length; i++){
      switch (str[i]){
        case 'a':
          var flag_a = true;
          break;
        case 'e':
          var flag_e = true;
          break;
        case 'i':
          var flag_i = true;
          break;
        case 'o':
          var flag_o = true;
          break;
        case 'u':
          var flag_u = true;
          break;
      }
      if(flag_a && flag_e && flag_i && flag_o && flag_u){
        return "Given string is Vowel";
      }
    }
    return "Given string is Not Vowel";
  }else{
    return "please enter the correct value";
  }
}
var res = vowvelOrNot(input);
console.log(res);
var input=“kad aeiou”;
函数VOVERNOT(输入){
var str=input.toLowerCase();
如果(str.length>0){

对于(i=0;i我想要一个数学解,所以我想出了这个:

function isVowel(c) {
    c = c.charCodeAt(c);
    var magicNumber = 2198524575;
    c = (c > 96) ? (c-32) : c;
    if( c < 65 || c == 75 || c > 90) 
        return false;
    var div = magicNumber / c;
    var diff = div - Math.floor(div);
    if( diff == 0 )
        return true;
    return false;
}
函数是元音(c){
c=c.charCodeAt(c);
var magicNumber=2198524575;
c=(c>96)?(c-32):c;
如果(c<65 | | c==75 | | c>90)
返回false;
var div=magicNumber/c;
var diff=分区-数学楼层(分区);
如果(差异==0)
返回true;
返回false;
}
您将字符作为字符串发送给它。它将检测以下任何一项:AEIOUaeiou

幻数就是AEIOU的ascii码相乘。检查c==75是因为K是唯一一个也可以得到完美除法的字符,只要我们将检查限制为大写字母


注意:如果您可以删除
c=c.charCodeAt(c);
则代码运行速度会更快。它几乎与其他方法一样快,并且此代码可能仍然可以改进。

答案可以是一行,并且简短而甜美。请参见下文

    function isVowel(x) { 
        return ("aeiouAEIOU".indexOf(x) != -1); 
    }
函数是_元音(char){ 让Listof元音=['a','i','e','o','u','a','i','e','o','u']

返回元音的列表。包括(字符); }


log(is_元音('a'));

这里有一个简短的ES6帮助程序来测试元音

const isLetterAVowel = (str) => {
  return ['a', 'e', 'i', 'o', 'u'].includes(str.charAt(0).toLowerCase());
}
辅音返回
false

console.log(isLetterAVowel('cat'));
元音返回
true

console.log(isLetterAVowel('emu'));

boolean
在javascript中不存在,请改用
var
哦。至少我在学习早期就发现了这一点。您可以在自己的代码中自由使用您想要的任何代码格式和缩进,但在寻求帮助时,请花时间以某种合理、一致的方式格式化代码,也许可以使用类似于T的服务。
函数是_元音(str){return str.match('a | e | i | o | u/i')?true:false;}
是编写该函数的更好方法-在以下情况下不区分大小写:matters@Novocaine:说得好,说得好!”我知道要想知道什么时候有更简单的方法,这是一个非常冗长的过程,但我只是按照说明去做“我知道,要想知道什么时候有更简单的方法,这是一个非常冗长的过程,但我只是按照指示去做。"@T.J.Crowder虽然您严格按照原始海报的说明进行了操作,但您的回答并不是提问者可以使用的最佳代码示例。TangChanrith发布了一个优雅而简单的问题解决方案,除了您的信息丰富的答案。然而,人们在未来寻找类似的解决方案时n要么选择对OP有用但最终效率低下的解决方案,要么选择TangChanrith的解决方案,但至少他们有选择权。a、e、i、o、u-将返回“false”。要修复此问题,请添加x=x.toUpperCase();@MPV-我不认为这是一个关于检测元音的广义问题。它是关于OPs代码为什么不起作用的问题。我使用Es6这是真正的单线解决方案
const isVowel=x=>!!x.match(/[aeiou]/I)
console.log(isLetterAVowel('emu'));