var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){return a - b}) //Array now becomes [7, 8, 25, 41]
po prostu zmienić na
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){console.log("comparing " + a + ", " + b);return a - b}) //Array now becomes [7, 8, 25, 41]
po próbie powyższy kod w konsoli dziennika będzie można zobaczyć następujący wynik
var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){console.log("comparing " + a + ", " + b);return a - b}) //Array now becomes [7, 8, 25, 41]
IS interp Reted być rosnąco? Powinien być podzielony na trzy przypadki: < 0, == 0 i> 0; ale jak to ma sens, kiedy aib może być cokolwiek?
pierwsze porównanie: 25,8
Teraz, pozwala odpowiedzieć na wątpliwości w jaki sposób wybiera wartość a, b.Po uruchomieniu kodu widać pierwsze porównanie pomiędzy 25,8, a jeśli wynik jest dodatni, oznacza to, że 8 jest mniejsze. Więc po prostu re-order to do 8, 25.
drugie porównanie: 25,7
Następnie dokonywane jest porównanie pomiędzy 25, 7 i to dlatego, że jeśli wynik jest ujemny, a następnie numer trzeci zostanie oddany po 25 i sortowaniu trzech liczb zostanie zrobione.
Ale sprawa jest inna, teraz, gdy wynik ponownie jest pozytywny. Tablica ponownie zamienia się na po tym czasie ponownie wykonuje test, dopóki nie stwierdzi, że warunek jest dodatni. Teraz porównuje 8, 7, a wynik znów jest ujemny.
tablicy ponownie re-zlecenia się do
7, 8, 25
TRZECI porównania: 25, 41
Teraz, w tej ostatniej porównania, wynik jest jako pozytywny, co oznacza, że 41 jest większa niż 25 .
więc tablica przestawia się do
7,8,25,41
duplikat: http: //stackoverflow.com/questions/1494713/how-does-javascripts-sortworkwork – alishaukat