Метод sort

Метод sort производит сортировку массива в лексикографическом порядке и возвращает уже измененный массив. Необязательным параметром можно указать собственную функцию для сортировки.

Синтаксис

javascriptмассив.sort([функция]);

Пример

Давайте посортируем массив:

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

Результат выполнения кода:

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

Пример

Давайте отсортируем массив с числами:

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

Результат выполнения кода:

javascript[1, 2, 4, 7]

Пример

Давайте добавим в массив числа и отсортируем его:

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

В результате выполнения кода мы увидим, что числа располагаются не в порядке возрастания, а в лексикографическом порядке, т.е. числа между собой сравниваются как строки. При этом сравнение идет по каждому символу, больше ли код первого символа, чем код соседнего и т.д. Результат:

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

Пример

Теперь давайте отсортируем массив с помощью функции, в которой пропишем условие - если первый параметр больше второго, то его переставляем (для этого в return любое положительное число). В обратном случае перестановка не требуется и мы указываем 0 или любое отрицательное число:

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

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

console.log(arr);

Результате выполнения кода:

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

Пример

Давайте для удобства сократим код в нашей функции из предыдущего примера:

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

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

console.log(arr);

Результате выполнения кода:

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

Пример

А теперь с помощью функции отсортируем массив в порядке убывания:

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

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

console.log(arr);

Результате выполнения кода:

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

Пример

Давайте отсортируем массив объектов по ключу 'one' в порядке возрастания:

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

Результате выполнения кода:

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

Пример

А теперь давайте отсортируем массив объектов по ключу '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);

Результате выполнения кода:

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

Пример

Давайте проверим изменился ли массив после применения метода sort:

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

console.log(arr);

Результат выполнения кода:

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

Смотрите также

  • метод filter,
    который позволяет фильтровать элементы массива