Ce face sort
sort ordonează tabloul pe loc și îl returnează. Fără funcție de comparare, transformă elementele în text și le ordonează alfabetic. De aceea, [10, 9, 1].sort() dă [1, 10, 9].
Pentru numere dai o funcție de comparare: (a, b) => a - b pentru ordine crescătoare și (a, b) => b - a pentru descrescătoare. Pentru texte în română, folosește a.localeCompare(b, "ro"), care pune corect diacriticele.
Dacă vrei să păstrezi tabloul original, folosește toSorted (ES2023), care returnează o copie ordonată.
Parametri
| Parametru | Descriere |
|---|---|
(a, b) => ... |
Opțional. Returnează un număr negativ dacă a vine înaintea lui b, pozitiv dacă vine după, 0 dacă sunt egale. |
Ce returnează
Același tablou, ordonat.
Exemple
Exemplul 1: Capcana numerelor
const numere = [10, 9, 1, 100];
console.log([...numere].sort());
console.log([...numere].sort((a, b) => a - b));
console.log([...numere].sort((a, b) => b - a));
Rezultat
[ 1, 10, 100, 9 ]
[ 1, 9, 10, 100 ]
[ 100, 10, 9, 1 ]
Exemplul 2: Nume românești în ordine alfabetică
const nume = ["Ștefan", "Sorin", "Tudor", "Ana", "Țuțu"];
console.log([...nume].sort());
console.log([...nume].sort((a, b) => a.localeCompare(b, "ro")));
Rezultat
[ 'Ana', 'Sorin', 'Tudor', 'Ștefan', 'Țuțu' ]
[ 'Ana', 'Sorin', 'Ștefan', 'Tudor', 'Țuțu' ]
Exemplul 3: Obiecte după un câmp
const produse = [
{ nume: "Monitor", pret: 900 },
{ nume: "Mouse", pret: 60 },
{ nume: "Laptop", pret: 3500 },
];
produse.sort((a, b) => a.pret - b.pret);
console.log(produse.map((p) => `${p.nume}: ${p.pret}`));
Rezultat
[ 'Mouse: 60', 'Monitor: 900', 'Laptop: 3500' ]
Greșeli frecvente
- Ordonezi numere fără funcție de comparare și obții ordinea alfabetică: 1, 10, 100, 9.
- Uiți că
sortmodifică tabloul original. Ordonează o copie:[...tablou].sort(...)sautablou.toSorted(...).
Comenzi înrudite
map: Creează un tablou nou, transformând fiecare element cu o funcție.filter: Creează un tablou nou doar cu elementele care îndeplinesc o condiție.... (spread): Desface un tablou sau un obiect în elementele lui. Folosit pentru copii și combinări.