2012-07-06 14 views
10

¿Está equivocada esta parte del libro "Aprendiendo PHP, MySql y Javascript de. Robin Nixon"?ordenar por matriz numérica()

numbers = [7, 23, 6, 74]; 

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

salida es 6,7,23,74

El libro dice:

Si la función anónima dentro de una especie() devuelve un valor mayor que cero, el tipo supone un viene antes de b.

Si la función anónima dentro de una especie() devuelve un valor menor que cero, el tipo asume b viene antes un.

El orden ejecuta esta función en todos los valores de la matriz para determinar su orden.

¿Es esto incorrecto? Debido ....

a aquí es 7
b aquí es 23

7 - 23 = -16 // un número menor que cero. El libro dice que debería venir b antes que a.

por lo que el resultado final debe ser 74, 23, 7, 6

+1

No, es correcto: http://jsfiddle.net/cjD3v/ –

+4

Ya sabes, podrías simplemente: _try out_. Como en el jsfiddle anterior – TheZ

+1

pero la explicación del libro es incorrecta? –

Respuesta

5

Parece que es un error. De MDN:

Si compareFunction (a, b) es menor que 0, tipo A a un índice menor que b.

("Bajo índice" en este caso significaría que una viene antes b)

2

La salida es correcta, pero la explicación no lo es. Si el método devuelve < 0, a aparece antes que b.

Cuestiones relacionadas