Metoda sort

Metoda sort realizează sortarea unui array în ordine lexicografică și returnează array-ul deja modificat. Ca parametru opțional se poate specifica o funcție personalizată pentru sortare.

Sintaxă

javascriptarray.sort([funcție]);

Exemplu

Să sortăm un array:

javascriptlet arr = ['d', 'b', 'a', 'c'];
console.log(arr.sort());

Rezultatul executării codului:

javascript['a', 'b', 'c', 'd']

Exemplu

Să sortăm un array cu numere:

javascriptlet arr = [4, 1, 7, 2];
console.log(arr.sort());

Rezultatul executării codului:

javascript[1, 2, 4, 7]

Exemplu

Să adăugăm în array mai multe numere și să-l sortăm:

javascriptlet arr = [1, 123, 2, 4, 111, 7];
console.log(arr.sort());

În urma executării codului vom vedea că numerele nu sunt aranjate în ordine crescătoare, ci în ordine lexicografică, adică numerele sunt comparate între ele ca șiruri de caractere. În acest caz, comparația se face pentru fiecare caracter, dacă este mai mare codul primului caracter decât codul vecinului, etc. Rezultatul:

javascript[1, 111, 123, 2, 4, 7]

Exemplu

Acum să sortăm array-ul cu ajutorul unei funcții, în care vom specifica condiția - dacă primul parametru este mai mare decât al doilea, atunci le schimbăm ordinea (pentru aceasta în return orice număr pozitiv). În caz contrar, schimbarea ordinii nu este necesară și specificăm 0 sau orice număr negativ:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  if (a > b) {
    return 1;
  } else {
    return -1;
  }
});

console.log(arr);

Rezultatul executării codului:

javascript[1, 2, 4, 7, 111, 123]

Exemplu

Să scurtăm codul din funcția noastră din exemplul anterior:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  return a - b;
});

console.log(arr);

Rezultatul executării codului:

javascript[1, 2, 4, 7, 111, 123]

Exemplu

Iar acum cu ajutorul funcției să sortăm array-ul în ordine descrescătoare:

javascriptlet arr = [1, 123, 2, 4, 111, 7];

arr.sort(function(a, b) {
  return b - a;
});

console.log(arr);

Rezultatul executării codului:

javascript[123, 111, 7, 4, 2, 1]

Exemplu

Să sortăm un array de obiecte după cheia 'one' în ordine crescătoare:

javascriptlet arr = [
  {one: 1, two: 2},
  {one: 7, two: 1},
  {one: 3, two: 3}
];
arr.sort(function(a, b) {
  return a.one - b.one;
});

console.log(arr);

Rezultatul executării codului:

javascript[
  {one: 1, two: 2},
  {one: 3, two: 3},
  {one: 7, two: 1}
]

Exemplu

Iar acum să sortăm array-ul de obiecte după cheia 'two':

javascriptlet arr = [
  {one: 1, two: 2},
  {one: 7, two: 1},
  {one: 3, two: 3}
];
arr.sort(function(a, b) {
  return a.two - b.two;
});

console.log(arr);

Rezultatul executării codului:

javascript[
  {one: 7, two: 1},
  {one: 1, two: 2},
  {one: 3, two: 3}
]

Exemplu

Să verificăm dacă array-ul s-a modificat după aplicarea metodei sort:

javascriptlet arr = ['b', 'a', 'd', 'c'];
let res = arr.sort();

console.log(arr);

Rezultatul executării codului:

javascript['a', 'b', 'c', 'd']

Vezi și

  • metoda filter,
    care permite filtrarea elementelor array-ului