javascript - tratar - prepotencia frases
¿Por qué la cuerda "11" es menor que la cuerda "3"? (6)
Esta pregunta ya tiene una respuesta aquí:
if (''11'' < ''3'') alert(''true'');
Es obvio que no los compara por longitud sino por codificación. Sin embargo, no entiendo cómo funciona. Necesito alguna explicación :-)
En muchos lenguajes de programación, las cadenas se comparan como lexicographically . Puedes consultar el orden alfabético
Ha sido tratado como una comparación de cadenas. Entonces 1 <3 (1er carácter de dos cadenas), luego el texto 11 anterior al texto 3
Las cadenas se comparan carácter por carácter hasta que no son iguales o no quedan caracteres para comparar. El primer caracter de ''11'' es menor que el primer caracter de ''3''.
> ''11'' < ''3''
true
> ''31'' < ''3''
false
> ''31'' < ''32''
true
> ''31'' < ''30''
false
Si usamos letras entonces, dado que b
no es menor que a
, abc
no es menor que aaa
, pero como c
es menor que d
, abc
es menor que abd
.
> ''abc'' < ''aaa''
false
> ''abc'' < ''abd''
true
Por defecto, JavaScript comparará dos cadenas por el valor ordinal de cada carácter; al igual que strcmp()
funciona en C.
Para hacer que su comparación funcione, puede convertir cualquier lado en un número para decirle al intérprete sus intenciones de comparación numérica:
Number(''11'') < ''3'' // false
+''11'' < ''3'' // false, using + to coerce ''11'' to a numeric
''11'' < Number(''3'') // false
''11'' < +''3'' // false
Se compara por cada personaje, lo siguiente será false
:
if (''41'' < ''3'') alert(''true'');
Como 4
no es menos de 3
. Entonces, esencialmente, su comparación se reduce a esto:
if (''1'' < ''3'') alert(''true''); // true
''1'' < ''3''
y dado que el primer carácter es el "personaje más significativo" (no es que este término tenga sentido). Los siguientes personajes ya no se compararán.