2012-07-06 5 views
10

Cette partie du livre "Apprendre PHP, MySql et Javascript par Robin Nixon" est-elle erronée?tableau numérique sort()

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

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

sortie est 6,7,23,74

Le livre dit:

Si la fonction anonyme à l'intérieur sort() retourne une valeur supérieure à zéro, le genre suppose une vient avant b.

Si la fonction anonyme à l'intérieur sort() retourne une valeur inférieure à zéro, le genre suppose b vient avant un.

Le tri exécute cette fonction sur toutes les valeurs du tableau pour déterminer leur ordre.

est-ce faux? Parce que ....

a ici est 7
b ici est 23

7 - 23 = -16 // un nombre inférieur à zéro. Livre dit qu'il devrait venir avant a.

de sorte que le résultat final devrait être 74, 23, 7, 6

+1

Non, c'est juste: http://jsfiddle.net/cjD3v/ –

+4

Vous savez, vous pourriez simplement: _try it out_. Comme dans le jsfiddle ci-dessus – TheZ

+1

mais l'explication du livre est-ce faux? –

Répondre

5

Il semble qu'il est faux. De MDN:

Si la fonction de comparaison (a, b) est inférieure à 0, trier a avec un indice inférieur à b.

(« indice inférieur » dans ce cas, cela signifierait que vient avant b)

2

La sortie est correcte, mais l'explication est pas. Si la méthode renvoie < 0, un vient avant b.