Próbuję zrozumieć, jak dokładnie działa sort() i jak mam go używać.Różnica między sort(), sort (funkcja (a, b) {return a-b;}); i sortowanie (funkcja (a, b) {...})
Zrobiłem kilka badań (google) i przeszedł podobne pytania tutaj na stackoverflow, ale nadal istnieje kilka rzeczy, które nie są w 100% jasne dla mnie.
Więc moje rozumienie tej pory jest następujący:
Są to:
sort() bez parametrów: sortuje tylko proste tablice String wartości alfabetycznie aw rosnąco zamówienie
Np
// sort alphabetically and ascending:
var myArr=["Bob", "Bully", "Amy"]
myArr.sort() // Array now becomes ["Amy", "Bob", "Bully"]
sortowania() z funkcji jako parametr: sortowanie przedmiotów w macierzy zgodnie z ich właściwościami; elementy są jednak w porównaniu z grupą numerów
myArr.sort(function(a,b) {
return a - b;
});
sortowania() z funkcji jako parametr: sortowanie przedmiotów w macierzy zgodnie z ich właściwościami; elementy mogą być numery lub Struny
myArr.sort(function(a, b) {
if (a.sortnumber < b.sortnumber) return -1;
else if (a.sortnumber > b.sortnumber) return 1;
return 0;
});
Próbowałem sortowania następującą tablicę z wszystkich tych funkcji sort (3).
var myArr = [{
"sortnumber": 9,
"name": "Bob"
},
{
"sortnumber": 5,
"name": "Alice"
},
{
"sortnumber": 4,
"name": "John"
},
{
"sortnumber": 3,
"name": "James"
},
{
"sortnumber": 7,
"name": "Peter"
},
{
"sortnumber": 6,
"name": "Doug"
},
{
"sortnumber": 2,
"name": "Stacey"
}];
//myArr.sort(); // doesn't do anything since it doesn't know on what property to sort
/*
myArr.sort(function(a, b) {
return (a.sortnumber - b.sortnumber); // sorts array
return (a.name - b.name); // doesn't sort array
});
*/
/*
// sorts array even when I use name as property to sort on
myArr.sort(function(a, b) {
if (a.sortnumber < b.sortnumber) return -1;
else if (a.sortnumber > b.sortnumber) return 1;
return 0;
});
*/
console.log(myArr);
Here również skrzypce.
Więc moje pytania to:
- Czy moje rozumienie jest poprawne?
- Czy jest coś, czego mi brakuje?
- Jeśli trzeci przypadek działa przez cały czas, czy zawsze mogę się do niego przykleić, czy też są dwa inne przypadki bardziej wydajne lub mają jakieś zalety w trzecim przypadku?
Byłbym bardzo wdzięczny, gdyby ktoś mógł rozwinąć powyższe. Dziękuję Ci.
Użyj pierwszej lub trzeciej metody, jeśli potrzebujesz obsługiwać stare przeglądarki IE. – Maris
_Czy jest coś, czego mi brakuje? _ Takie pytania są nie na temat. Tutaj mamy do czynienia tylko z ** konkretnymi ** problemami. – hindmost
@hindmost: Czy jest coś szczególnego, czego mi brakuje w określonym temacie, to w jaki sposób pytanie ma być czytane. – Setily