Introducción
Ya que andamos viendo cómo trabajar con cadenas en JavaScript, analicemos cómo podemos comprobar si una cadena comienza con una vocal en JavaScript.
Es algo realmente sencillo e incluso podría tomarse como un repollo (repost) de otro post anterior. Sin embargo, prefiero hacerlo por si alguien se quedó con la duda; cuando uno es novato no sabe cosas obvias.
Lecturas recomendadas
Antes de seguir, si tienes poca experiencia con este lenguaje te invito a que estudies más con los siguientes posts:
- Comienza con y termina con en JavaScript
- Const en JavaScript
- Funciones flecha en JavaScript
Función comienza con vocal en JavaScript
Dejo la función o método y más abajo la explicamos.
const comienzaConVocal = (cadena) => {
if (!cadena || cadena.length <= 0) return false;
// Convertir a minúscula porque las vocales con las que la compararemos están
// en minúscula
let cadenaEnMinuscula = cadena.toLowerCase();
let primerCaracter = cadenaEnMinuscula.charAt(0);
// Vamos a buscar si el carácter está en este arreglo
const vocales = ["a", "e", "i", "o", "u"];
// indexOf devuelve -1 si no encuentra el carácter en el arreglo
// y si lo encuentra, devuelve el índice o posición, pero eso no nos importa ahora
if (vocales.indexOf(primerCaracter) === -1) {
return false;
} else {
return true;
}
}
¿Qué hacemos? bueno, primero debemos tener a la palabra que nos manden en minúscula, ya que al compararla la vamos a comparar con vocales minúsculas.
Luego, extraemos la primera letra de la cadena. Declaramos un arreglo de vocales y buscamos dentro de ese arreglo usando indexOf.
La función indexOf devuelve el índice de la letra en el arreglo.
Por ejemplo, si la letra es a entonces devolverá 0, si la letra es e devolverá 1 y si es u devolverá 4; si no coincide o no encuentra la letra entonces devolverá -1.
Justamente de eso nos aprovechamos, ya que si devuelve -1 significa que la primera letra no es una vocal, y por lo tanto la palabra no comienza con vocal.
Probar la función
Podemos probar a la función más tarde con este código:
// Esto es para probar
const palabras = [
"Hola", "Perro", "Maggie", "Saludos", "Avión",
"Pájaro", "Saúl", "Estado", "Ornitorrinco", "Iglú",
"unión", "uniones", "ejemplo",
];
palabras.forEach(palabra => {
console.log("¿%s comienza con vocal? %s", palabra, comienzaConVocal(palabra));
});
Lo ejecutamos y aquí está la salida, la cual a mi parecer es correcta:
Función corta
Si eres un ninja de JavaScript y quieres no entender a tu código más tarde, aquí dejo esta función más corta. Es lo mismo que arriba pero con algunas “optimizaciones”.
Puedes usarla, pero recuerda que antes de ello debes entenderla, si no, mejor usa la de arriba.
const comienzaConVocal = cadena => ["a", "e", "i", "o", "u"].indexOf((cadena || "").toLowerCase().charAt(0)) !== -1;
Espero que sirva para estudiar cómo podemos escribir menos líneas de código.