Metoda sort

Metoda sort wykonuje sortowanie tablicy w porządku leksykograficznym i zwraca już zmodyfikowaną tablicę. Jako opcjonalny parametr można podać własną funkcję do sortowania.

Składnia

javascripttablica.sort([funkcja]);

Przykład

Posortujmy tablicę:

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

Wynik wykonania kodu:

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

Przykład

Posortujmy tablicę z liczbami:

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

Wynik wykonania kodu:

javascript[1, 2, 4, 7]

Przykład

Dodajmy do tablicy liczby i posortujmy ją:

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

W wyniku wykonania kodu zobaczymy, że liczby są ułożone nie w porządku rosnącym, ale w porządku leksykograficznym, czyli liczby są porównywane między sobą jak ciągi znaków. Przy tym porównanie odbywa się po każdym znaku, czy kod pierwszego znaku jest większy niż kod sąsiedniego itd. Wynik:

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

Przykład

Teraz posortujmy tablicę za pomocą funkcji, w której określimy warunek - jeśli pierwszy parametr jest większy niż drugi, to go przestawiamy (w tym celu w return dowolna liczba dodatnia). W przeciwnym przypadku przestawienie nie jest wymagane i podajemy 0 lub dowolną liczbę ujemną:

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

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

console.log(arr);

Wynik wykonania kodu:

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

Przykład

Dla wygody skróćmy kod w naszej funkcji z poprzedniego przykładu:

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

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

console.log(arr);

Wynik wykonania kodu:

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

Przykład

A teraz za pomocą funkcji posortujmy tablicę w porządku malejącym:

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

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

console.log(arr);

Wynik wykonania kodu:

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

Przykład

Posortujmy tablicę obiektów według klucza 'one' w porządku rosnącym:

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);

Wynik wykonania kodu:

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

Przykład

A teraz posortujmy tablicę obiektów według klucza '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);

Wynik wykonania kodu:

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

Przykład

Sprawdźmy, czy tablica zmieniła się po zastosowaniu metody sort:

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

console.log(arr);

Wynik wykonania kodu:

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

Zobacz też

  • metoda filter,
    która pozwala filtrować elementy tablicy