Una de las cosas raras que me ha pasado con js fue una comparación de string.
Para los que han programado en otros lenguajes mas o menos "modernos" saben que uno puede saber si un string es mayor que otro solo colocando la expresion "string1 > strin2" o "string1 < string2", esto en sí debería devolver 1 o 0 dependiendo de los strings ingresados. Yo pensaba que esta "regla" también se respetaba para js, GRAN ERROR SEÑOR, osea, no es TAN error, porque como siempre hay excepciones a la regla.
En firefox me funcionaba, en chrome y en ie6 no.
Ahora la solución.
Cachureando por ahi y por alla, recordando funciones de otros lenguajes(java más especificamente) llegue a una página en la que implementó la función "compareTo", la cuál por ejemplo en java existe. Lo que hace esto es comparar caracter por caracter el unicode de cada uno y entregando el resultado. Con esto se dejan de lado los errores (que pienso que es donde se marean los navegadores) que se pueden producir por caracteres extraños, acentos por ejemplo, mayúsculas u otra cosa.
Vamos al código
-
function compareTo( s )
-
{
-
var len1 = this.length;
-
var len2 = s.length;
-
var n = ( len1 <len2 ? len1 : len2 );
-
-
for( i = 0 ; i <n ; i++ )
-
{
-
var a = this.charCodeAt( i );
-
var b = s.charCodeAt( i )
-
if( a != b )
-
{
-
return( a - b );
-
}
-
}
-
return( len1 - len2 );
-
}
-
String.prototype.compareTo = compareTo;
Lindo no
Cualquier duda o sugerencia no dudes en comentar
Saludos tuto
