Как я могу получить количество прописных и строчных гласных в переменной в 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 — это «ложь», перейдите к следующему, если...Здесь у нас снова та же ошибка, вы присваиваете i значение 1, с той разницей, что 1 является «истинным» и сравнение завершено. Это означает, что на каждой итерации i равно 1, и цикл никогда не завершается, что приводит к зависанию выполнения. Вот почему вы никогда не доберетесь до
alert
.Подсказка, чтобы найти гласные:
Решение Пабло Лозано послужит вам лучше, поскольку оно представляет собой более полный анализ вашего кода. Я собираюсь дать вам решение, которое намного короче, чем то, что вы пытаетесь сделать.
Идея состоит в том, чтобы использовать регулярные выражения для поиска вхождений гласных (
[aeiou]
) в строке. Он находит их все по модификаторуg
и не учитывает регистр по модификаторуi
.Вот пример: