Array.sort()
nie sortuje poprawnie liczb
Już spieszę z wyjaśnieniem tego zjawiska. Otóż poniżej kod dwóch tablic, na których będziemy bazować:
const numbers = [10, 7, 12];
const words = ['krystyna', 'jarosław', 'antoni'];
Zatem jak będzie wyglądał wynik sortowania pierwszej tablicy numbers
?
numbers.sort(); // => Array(3) [ 10, 12, 7 ]
Ale jak to? Tak właśnie sortuje liczby metoda sort()
, gdy nie podamy jej żadnych argumentów.
Posortujmy zatem wyrazy alfabetycznie
Bazując na naszej drugiej tablicy words
, posortujmy je alfabetycznie:
words.sort(); // => Array(3) [ "antoni", "jarosław", "krystyna" ]
No proszę, w przypadku wartości typu string
, metoda nie myli się.
Jak poprawnie sortować liczby w JS?
Sprawa jest prosta. Metoda sort()
przyjmuje opcjonalnie argument tzw. komparator. Za pomocą tej funkcji możemy kontrolować porządek elementów w tablicy podczas sortowania.
numbers.sort((a, b) => {
if (a > b) {
return 1;
}
if (a < b) {
return -1;
}
return 0;
}); // => Array(3) [ 7, 10, 12 ]
Teraz nasza metoda zwróciła poprawny wynik. Da się także zrobić to krócej:
numbers.sort((a, b) => a - b); // => Array(3) [ 7, 10, 12 ]
numbers.sort((a, b) => b - a); // => Array(3) [ 12, 10, 7 ]
A może kawa?
👉 Przydatny wpis? To może kawa? 😀
Przeczytaj także

Bezpieczeństwo w kodzie JavaScript?
Bezpieczeństwo kodu JavaScript to zasady takie jak autoryzacja i uwierzytelnianie, a także skuteczne mechanizmy szyfrowania danych.

Dodanie unikalnych elementów do tablicy
Lista elementów na stronie wymaga niekiedy przechowywania ich w tablicy z racji ilości danych. Może oczywiście zdarzyć się tak, że elementy będą się powtarzać, lub użytkownik będzie miał możliwość dodawania własnych.

Package.json – co to jest i z czego się składa?
Plik package.json jest podstawą systemu Node.js, który zawiera kompletne informacje na temat projektu. Od nazwy projektu, przez warunki licencyjne, aż po użyte pakiety potrzebne do zbudowania działającej wersji projektu.