Cum ați sorta un array de numere?
sobes.tech AI
Răspuns de la AI
// Folosim metoda sort() cu o funcție de comparație
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Sortare crescătoare
// Pentru sortare descrescătoare:
// numbers.sort((a, b) => b - a);
Metoda sort() în JavaScript sortează elementele array-ului la loc. În mod implicit, convertește elementele în șiruri și le sortează lexicografic. Pentru a sorta corect numerele, trebuie să îi pasezi o funcție de comparație.
Funcția de comparație primește doi parametri, a și b.
- Dacă funcția returnează un număr negativ,
ava fi înaintea luib. - Dacă returnează un număr pozitiv,
bva fi înaintea luia. - Dacă returnează 0, ordinea elementelor nu se schimbă.
Pentru sortarea numerelor în ordine crescătoare, se folosește (a, b) => a - b. Dacă a este mai mic decât b, rezultatul este negativ și a vine înainte.
Pentru sortarea descrescătoare, se folosește (a, b) => b - a. Dacă b este mai mic decât a, rezultatul este pozitiv și b vine înainte.
Alte metode (mai puțin frecvent folosite pentru array-uri numerice simple, dar utile):
-
Metoda
localeCompare()pentru șiruri cu numere:// Nu recomandată pentru numere pure, dar poate fi folosită // dacă numerele sunt reprezentate ca șiruri și trebuie să țină cont de localizare. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Va sorta ca [ "1", "2", "10" ] -
Crearea unei copii a array-ului înainte de sortare:
// Dacă doriți să păstrați array-ul original const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // sau // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);