sort în JavaScript

Tablouri (array) Toate browserele, Node.js

Ordonează elementele unui tablou. Modifică tabloul original.

Sintaxă
tablou.sort((a, b) => a - b)

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ă sort modifică tabloul original. Ordonează o copie: [...tablou].sort(...) sau tablou.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.