Sortowanie tablic jest podstawową, ale niezbędną umiejętnością w pracy każdego programisty. JavaScript oferuje metody umożliwiające sortowanie, jednak prawidłowe ich zastosowanie wymaga zrozumienia, jak działa funkcja porównująca przekazywana do metody sort()
. W tej lekcji wyjaśnimy, jakie wartości powinna zwracać funkcja porównująca, aby sortowanie było wykonane prawidłowo.
Funkcja porównująca
Funkcja porównująca przyjmuje dwa argumenty (oznaczmy je jako a
i b
), które są wartościami porównywanymi w trakcie sortowania. Na podstawie zwróconej wartości metoda sort()
decyduje, w jaki sposób umieścić te elementy względem siebie w tablicy.
- Jeśli zwróci wartość mniejszą od 0, element
a
zostanie umieszczony przed elementemb
. - Jeśli zwróci wartość równą 0, kolejność elementów
a
ib
względem siebie zostanie zachowana. - Jeśli zwróci wartość większą od 0, element
b
zostanie umieszczony przed elementema
.
Przykład sortowania liczb
let numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]
W powyższym przykładzie, funkcja porównująca return a - b;
zwraca różnicę między liczbami. Dzięki temu, jeśli a
jest mniejsze od b
, zwracana jest wartość ujemna, co umieszcza a
przed b
.
Sortowanie tablicy ciągów znaków z uwzględnieniem wielkości liter
let words = ['banana', 'Orange', 'apple', 'Mango'];
words.sort(function(a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
console.log(words); // ['apple', 'banana', 'Mango', 'Orange']
Funkcja localeCompare()
porównuje ciągi znaków zgodnie z lokalnym porządkiem sortowania, zwracając wartości zgodne z wymaganiami funkcji porównującej.
Sortowanie tablicy obiektów
let items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
items.sort(function(a, b) {
return a.value - b.value;
});
console.log(items);
W tym przykładzie, sortujemy obiekty według wartości value
. Funkcja porównująca dokładnie określa, jak posortować elementy na podstawie tej właściwości.
Podsumowanie
Zrozumienie, jak działa funkcja porównująca w metodzie sort()
, jest kluczowe do efektywnego sortowania tablic w JavaScript. Poprzez zwracanie wartości ujemnej, dodatniej, lub zera, możemy dokładnie kontrolować kolejność elementów w tablicy. Dzięki temu mechanizmowi, metoda sort()
jest niezwykle elastyczna i pozwala na sortowanie danych w niemal dowolny sposób.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.