Anteriormente vimos cómo saber si una string es un pangrama en Python.
Ahora veremos cómo comprobar que una cadena es un pangrama en JavaScript, para ello usaremos un algoritmo simple en combinación con el método includes.
Recuerda que un pangrama es aquella oración que contiene todas las letras de un alfabeto de determinado idioma; en este caso lo haremos con el alfabeto español, aunque también se podrá modificar para otro alfabeto como el inglés.
Hay que recorrer todo el alfabeto y comprobar que todas y cada una de las letras estén presentes dentro de la cadena a probar, para ello hay que ver si la cadena incluye la letra.
Antes de eso hay que convertir la cadena a minúscula, pues vamos a compararla con el alfabeto de letras minúsculas.
Nota: en los ejemplos de código voy a usar const con let y funciones flecha.
Hablar es de mal gusto; veamos el código. Lo dejo aquí y lo explico más abajo:
/**
* Función que indica si una cadena es Pangrama en JavaScript
*
* @author parzibyte
*/
const esPangrama = cadena => {
const ALFABETO_MINUSCULAS = "abcdefghijklmnñopqrstuvwxy";
// Convertir a minúsculas
cadena = cadena.toLowerCase();
let alfabetoComoArreglo = Array.from(ALFABETO_MINUSCULAS);
// Recorrer alfabeto
for (let indice = 0; indice < alfabetoComoArreglo.length; indice++) {
let letraActual = alfabetoComoArreglo[indice];
// En caso de que la cadena NO contenga la letra, regresamos false de una vez
if (!cadena.includes(letraActual)) return false;
}
// Se termina el ciclo y no se rompió arriba, ¡así que la cadena es pangrama!
return true;
};
// Probar método
const CADENAS_PARA_PROBAR = [
"El cadáver de Wamba, rey godo de España, fue exhumado y trasladado en una caja de zinc que pesó un kilo", // No
"Hola", // No
"aeiou", // No
"parzibyte", // No
"abcdefghijklmnñopqrstuvwxyz", // Sí
"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja", // Sí,
"abcdefghijklmnopqrstuvwxyz", // No, porque no lleva ñ
"Mi hijo degustó en el festival de bayas una extraña pizza de kiwi con queso", // Sí
];
CADENAS_PARA_PROBAR.forEach(cadena => {
console.log(`¿'${cadena}' es pangrama? ${esPangrama(cadena)}`);
});
Primero definimos el alfabeto en minúsculas y convertimos la cadena que vamos a probar igualmente a minúsculas.
Recorremos el alfabeto en un simple for
y vamos probando que cada letra del alfabeto esté incluida dentro de la cadena.
Si se acaba el ciclo sin romperse (o sea, que sí están todas las letras del alfabeto en la cadena) entonces se dice que sí es un pangrama.
Los arreglos tienen un método llamado every
, que regresan un booleano
si se cumple un predicado para todos los casos; gracias a ello podemos crear un código más corto (no lo recomiendo, porque es menos legible).
Queda así:
/**
* Función que indica si una cadena es Pangrama en JavaScript
* (método corto)
* @author parzibyte
*/
const esPangrama = cadena => {
const ALFABETO_MINUSCULAS = "abcdefghijklmnñopqrstuvwxy";
// Convertir a minúsculas
cadena = cadena.toLowerCase();
return Array.from(ALFABETO_MINUSCULAS).every(letra => cadena.includes(letra));
};
// Probar método
const CADENAS_PARA_PROBAR = [
"El cadáver de Wamba, rey godo de España, fue exhumado y trasladado en una caja de zinc que pesó un kilo", // No
"Hola", // No
"aeiou", // No
"parzibyte", // No
"abcdefghijklmnñopqrstuvwxyz", // Sí
"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja", // Sí,
"abcdefghijklmnopqrstuvwxyz", // No, porque no lleva ñ
"Mi hijo degustó en el festival de bayas una extraña pizza de kiwi con queso", // Sí
];
CADENAS_PARA_PROBAR.forEach(cadena => {
console.log(`¿'${cadena}' es pangrama? ${esPangrama(cadena)}`);
});
Ambos métodos tienen el mismo funcionamiento, pero el segundo ocupa menos líneas de código.
Puedes ejecutar los ejemplos en JavaScript o en Node.JS.
Mira más sobre JavaScript en este enlace.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.