Jak poprawnie sortować tablicę w JavaScript?

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 elementem b.
  • Jeśli zwróci wartość równą 0, kolejność elementów a i b względem siebie zostanie zachowana.
  • Jeśli zwróci wartość większą od 0, element b zostanie umieszczony przed elementem a.

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.

 

 

Scroll to Top