función esVocal()
Estoy desarrollando un lio de cadenas de texto y me gustaría saber vuestra opinión acerca de la siguiente función en javascript:
JavaScript:
-
function esVocal(v){
-
return (v=="a"||v=="e"||v=="i"||v=="o"||v=="u");
-
}
Opiniones, criticas y mejoras en los comentarios. Gracias! :P
Actualización 1
El primer comentario acerca de la función viene por parte de KUAN de blog.codexpress.cn (un blog que habla de javascript que he conocido hoy mismo) y es más de las funciones que me gustan, cripticas y potentes.
JavaScript:
-
function esVocal(v){
-
return [’a',’e',’i',’o',’u'].indexOf(v)>-1;
-
}
A ver si alguien más quiere participar y así haremos unas pruebas de velocidad en distintos navegadores y sistemas operativos :)



Comentarios
function esVocal(v){
return ['a','e','i','o','u'].indexOf(v)>-1;
}
Mi comentario no es acerca de la velocidad de la implementación o del rendimiento en distintos sistemas, sino una reflexión más general:
El concepto de “vocal” proviene de la fonética y está ligado al lenguaje en el que se usa un determinado caracter. Así que no se puede decidir si un caracter es intrínsecamente una vocal o una consonante. Así por ejemplo, Ä (a con diéresis) es también una vocal en muchos lenguajes y no aparece en tu lista. Y algo como “v” que creemos claramente que es una consonante, es en el lenguaje creek una vocal. Y luego tenemos en Unicode todos los caracteres para los que el concepto vocal/consonante no se puede ni aplicar.
Así que la función debería llamarse más correctamente esLetraVocalEspañola()
Marcos, la idea es que esto lo vamos a utilizar para encontrar vocales en dominios.es, los cuales no contienen acentos (aún, jeje). Lo genial sería haber ido a subflash y haber discutido el tema largo y tendido jejeje… Que tal fué?
una cosa. La función primera, aunque la velocidad en este caso es casi despreciable, por tratarse de complejidad muy simple, es mas rápida por las propias características del operador lógico estricto. “||”.
Si encuentra un valor equivalente en la cadena, la función deja de evaluar el resto de la sentencia, por lo tanto es mas rápida. Sin embargo, con indexOf, tiene que evaluar todo el array.
Ojo, no pasaría lo mismo con el operador “|”, que en este caso tendría un comportamiento similar a la segunda.
En temas de memoria ya me pierdo.
Yo prefiero la primera por ser más fácil de entender. Pero para gustos, los colores.
Saludos!
Otra opción sería con expresiones regulares. A ver que tal esas pruebas de rendimiento..
function esVocal(v)
{
var patron = /[aeiou]/;
return patron.test(v);
}
Deja un comentario