如何在 JavaScript 中的变量中获取大写和小写元音的数量。
var person = new Object();
person = prompt("Introduce tus datos");
//Numero de vocales
var numVocales;
for (i = 0; i < 10; i++) {
var vocal;
if (i = 0){
vocal = "a";
}
else if (i = 1){
vocal = "e";
}
else if (i = 2){
vocal = "i";
}
else if (i = 3){
vocal = "o";
}
else if (i = 4){
vocal = "u";
}
else if (i = 5){
vocal = "A";
}
else if (i = 6){
vocal = "E";
}
else if (i = 7){
vocal = "I";
}
else if (i = 8){
vocal = "O";
}
else if (i = 9){
vocal = "U";
}
var aux = person.indexOf(vocal);
if(aux != -1){
numVocales++;
}
}
alert(numVocales);
我无法在警报中显示信息,可能是 for 错误。另外,我不知道使用 indexOf() 是否会得到第一个匹配的字母。我的意思是,如果我有 ana,使用 indexOf() 会返回一个还是两个?
该代码有很多错误,因此我将尝试列出它们并留给您修复它:
第一行对你没有用,你可以删除它,因为在下一行你分配了一个新值
person
这个循环没有多大意义:最多 10 个,因为您有 10 个可能的字母要搜索?您需要做的是循环遍历
person
.这是一个经常被新手忽视的错误:
==
你使用了一个赋值,而不是使用(比较它们是否相等)。它的作用是 i 等于 0,这是要检查的值。由于 0 为“假”,如果...则转到下一个这里我们再次遇到同样的错误,你将 1 分配给 i,不同的是 1 是“真”并且比较完成。这意味着在每次迭代中 i 等于 1 并且循环永远不会结束,从而挂起执行。这就是为什么你永远不会到达
alert
.寻找元音的线索:
Pablo Lozano 的解决方案会更好地为您服务,因为它对您的代码进行了更完整的分析。我将为您提供一个比您尝试做的解决方案要短得多的解决方案。
这个想法是使用正则表达式来查找
[aeiou]
字符串中元音 ( ) 的出现。它通过修饰符找到它们,并且修饰符g
不区分大小写i
。这里有一个例子: