jesteś tutaj
483
Funkcje pierwszej klasy
Jak działa metoda sort tablic?
Tablice w języku JavaScript udostępniają metodę
sort
, która na podstawie
przekazanej funkcji potrafiącej porównywać dwa elementy danej tablicy pozwala
posortować jej zawartość. Poniżej przedstawiamy ogólny sposób działania tej metody
oraz wyjaśniamy, jak ma wyglądać funkcja porównująca: algorytmy sortowania są
powszechnie znane i często implementowane, a ich wspaniałą cechą jest to, że można
ich wielokrotnie używać do sortowania niemal dowolnych zbiorów danych. Istnieje
jednak mały problem: aby posortować konkretny zbiór elementów, funkcja sortująca
musi wiedzieć, jak elementy porównywać. Porównaj sobie sortowanie zbioru liczb
z sortowaniem zbioru imion lub zbioru obiektów. Sposób porównywania wartości
zależy od rodzaju elementów sortowanego zbioru: w przypadku liczb będziemy używać
operatorów
>
,
<
, oraz
==
, łańcuchy znaków będziemy porównywać alfabetycznie
(w języku JavaScript można używać operatorów
>
,
<
, oraz
==
), a obiekty porównamy
jeszcze inaczej, w zależności od ich właściwości.
Zanim przejdziemy do sortowania tablicy produktów firmy Cola sieciowcka,
przeanalizujmy prosty przykład. Zastosujemy w nim prostą tablicę liczb i posortujemy
ją w kolejności rosnącej, przy użyciu metody
sort
. A oto nasza przykładowa tablica.
var numbersArray = [60, 50, 62, 58, 54, 54];
Teraz musimy napisać funkcję, która wie, jak porównywać dwie wartości zapisane
w tej tablicy. Ponieważ jest to tablica liczb, nasza funkcja będzie musiała porównywać
ze sobą dwie liczby. Założymy, że liczby mają być posortowane w kolejności rosnącej.
Metoda
sort
oczekuje, że nasza funkcja zwróci wartość większą od zera, jeśli pierwsza
z przekazanych wartości jest większa od drugiej, wartość 0, jeśli obie wartości są
równe, oraz wartość mniejszą od zera, jeśli pierwsza z przekazanych wartości jest
mniejsza od drugiej. Nasza funkcja porównująca będzie wyglądać następująco.
.RGRZDQLHQDSRZDĝQLH
Tablice języka JavaScript
udostępniają wiele
użytecznych metod,
których możemy używać do
wykonywania na tablicach wielu
różnych operacji. Doskonałą książką,
w której można znaleźć informacje
na temat wszystkich tych metod
oraz sposobów korzystania z nich,
jest książka:
JavaScript: The Definitive
Guide
(wydana przez wydawnictwo
O’Reilly).
function compareNumbers(num1, num2) {
if (num1 > num2) {
return 1;
} else if (num1 === num2) {
return 0;
} else {
return -1;
}
}
Sortujemy tablicę liczb, a zatem będziemy
ze sobą porównywać dwie liczby.
Najpierw sprawdzamy, czy
wartość num1 jest większa
od num2; a jeśli jest,
zwracamy 1.
I w końcu, jeśli wartość
num1 jest mniejsza od num2,
zwracamy –1.
Jeśli obie wartości są
równe, zwracamy 0.
Zaostrz ołówek
Już wiesz, że funkcja porównująca,
którą należy przekazać do metody
sort, ma zwracać wartość
większą od zera, równą zero lub
mniejszą od zera, zależnie od
dwóch porównywanych wartości:
jeśli pierwsza z wartości jest
większa od drugiej, mamy zwrócić
wartość większą od zera, jeśli obie
porównywane wartości są sobie
równe, mamy zwrócić zero, a jeśli
pierwsza wartość jest mniejsza od
drugiej, mamy zwrócić wartość
mniejszą od zera.
Czy potrafisz wykorzystać tę
wiedzę oraz fakt, że funkcja
compareNumbers porównuje
liczby, by zmodyfikować ją
i w znaczący sposób skrócić jej kod?
Sprawdź nasze rozwiązanie
przedstawione pod koniec tego
rozdziału.
Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.