Mi código se está recuperando como si fueran todas las letras consonantes. Por favor, ayúdame.
function contagem() { texto = document.getElementById('ftexto').value; vogal = ['a', 'e', 'i', 'o', 'u']; consoante = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z']; totV = 0; totC = 0; for (x = 0; x < texto.length; x++) { if(x == consoante) { totC++; } else (x == vogal); { totV++; } } alert("Essa palavra possui " + totV + " vogais e " + totC + " consoantes.") }Usar fósforo para contar letras
Podría hacer esto de una manera más simple usando la coincidencia de JavaScript
Ejemplo:
let toC = text.match(/[bcdfghjklmnpqrstvwxyz]/gi) || []; let toV = text.match(/[aeiou]/gi) || []; Incluya las letras que desea contar dentro de los corchetes [] . El /gi instruye a la coincidencia para buscar en todo el texto letras mayúsculas y minúsculas. y el || [] al final es el valor predeterminado cuando no se encuentran coincidencias.
Luego puede usar toC.length para obtener el número de coincidencias y toC.join() para obtener los caracteres.
Ejecute el fragmento de código para comprender cómo funciona
ftexto.addEventListener("input", e => { // count vogal and consoate let text = ftexto.value; let toC = text.match(/[bcdfghjklmnpqrstvwxyz]/gi) || []; let toV = text.match(/[aeiou]/gi) || []; message.innerHTML = "Essa palavra possui " + toV.length + " vogais (" + toV.join() + ") e " + toC.length + " consoantes (" + toC.join() + ")"; }); <h4>Digite uma palavra:</h4> <input id="ftexto"> <h4 id="message"></h4>Para verificar si un carácter es vocal o consonante, no debe usar == .
Se debe verificar de la siguiente manera:
if(consoante.includes(texto[x])){ totC++; } else{ totV++; } aquí x es el índice utilizado para acceder a un carácter particular de texto
Para comenzar, debe declarar sus variables usando const o let .
Esto también se aplica a su declaración for cuando declara x .
A continuación, su declaración if está comprobando si x (que será un número, como ha establecido en su declaración for ) es igual a consoante , que ha declarado como una matriz de cadenas.
Lo que está tratando de hacer es verificar y ver si el carácter en la cadena texto en el índice x está incluido en la matriz consoante . Podemos lograr eso así:
if(consoante.includes(texto[x]))
Finalmente, dado que está verificando otra condición con su declaración else , necesita usar else if .
El siguiente código funciona como se esperaba.
function contagem() { const texto = document.getElementById('ftexto').value; const vogal = ['a', 'e', 'i', 'o', 'u']; const consoante = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z']; let totV = 0; let totC = 0; for (let x = 0; x < texto.length; x++) { if(consoante.includes(texto[x])){ totC++; } else if (vogal.includes(texto[x])) { totV++; } } alert("Essa palavra possui " + totV + " vogais e " + totC + " consoantes.") } contagem(); <input type="text" id="ftexto" value="abcde"></div>