sort por ordenar objetos objects fecha array alphabetically javascript

javascript - por - Array.sort() no ordena los números correctamente



sort json javascript (5)

He probado diferentes números, y siempre actúa como si los 0 no estuvieran allí y ordena los números correctamente de lo contrario. Alguien sabe por qué?

Obtiene un tipo lexicográfico (por ejemplo, convertir objetos en cadenas y ordenarlos en orden de diccionario), que es el comportamiento de clasificación predeterminado en Javascript:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

array.sort([compareFunction])

Parámetros

compararFunción

Especifica una función que define el orden de clasificación. Si se omite, la matriz se ordena lexicográficamente (en orden de diccionario) de acuerdo con la conversión de cadena de cada elemento.

En la especificación ECMAscript (la referencia normativa para el Javascript genérico), ECMA-262, 3ª ed. , sección 15.4.4.11, el orden de clasificación predeterminado es lexicográfico, aunque no salen y lo dicen, sino que dan los pasos para una función de clasificación conceptual que invoca la función de comparación dada si es necesario, de lo contrario comparan los argumentos cuando se convierten en cadenas :

13. If the argument comparefn is undefined, go to step 16. 14. Call comparefn with arguments x and y. 15. Return Result(14). 16. Call ToString(x). 17. Call ToString(y). 18. If Result(16) < Result(17), return −1. 19. If Result(16) > Result(17), return 1. 20. Return +0.

Esta pregunta ya tiene una respuesta aquí:

En Chrome 14 y Firefox 5 (no se han probado otros navegadores), el siguiente código no ordena los números correctamente:

<script> a = new Array(); a.push(10); a.push(60); a.push(20); a.push(30); a.push(100); document.write(a.sort()) </script>

Devuelve 10,100,20,30,60

He probado diferentes números, y siempre actúa como si los 0 no estuvieran allí y ordena los números correctamente de lo contrario. Alguien sabe por qué?




prueba esto:

a = new Array(); a.push(10); a.push(60); a.push(20); a.push(30); a.push(100); a.sort(Test) document.write(a); function Test(a,b) { return a > b ? true : false; }


a.sort(function(a,b){return a - b})

Estos pueden ser confusos ... revisa este enlace .