Junior
Jak byś posortował tablicę liczb?
sobes.tech AI
Odpowiedź od AI
// Używamy metody sort() z funkcją porównawczą
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Sortowanie rosnące
// Aby posortować malejąco:
// numbers.sort((a, b) => b - a);
Metoda sort() w JavaScript sortuje elementy tablicy na miejscu. Domyślnie konwertuje elementy na łańcuchy i sortuje je leksykograficznie. Aby poprawnie sortować liczby, należy przekazać funkcję porównawczą do sort().
Funkcja porównawcza przyjmuje dwa argumenty, a i b.
- Jeśli funkcja zwraca liczbę ujemną,
abędzie przedb. - Jeśli funkcja zwraca liczbę dodatnią,
bbędzie przeda. - Jeśli funkcja zwraca 0, kolejność elementów nie zmienia się.
Do sortowania liczb rosnąco używa się (a, b) => a - b. Jeśli a jest mniejsze od b, wynik jest ujemny i a idzie przed b.
Do sortowania malejąco używa się (a, b) => b - a. Jeśli b jest mniejsze od a, wynik jest dodatni i b idzie przed a.
Inne metody (mniej częste dla prostych tablic numerycznych, ale przydatne):
-
Metoda
localeCompare()dla łańcuchów z liczbami:// Niezalecane dla czystych liczb, ale może być używane // jeśli liczby są reprezentowane jako łańcuchy i trzeba uwzględnić lokalizację. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Posortuje jako [ "1", "2", "10" ] -
Tworzenie kopii tablicy przed sortowaniem:
// Jeśli chcesz zachować oryginalną tablicę const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // lub // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);