# Метод sort

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

## Синтаксис

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

## Пример

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

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

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

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

## Пример

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

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

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

`[1, 2, 4, 7]`

## Пример

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

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

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

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

## Пример

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

`let arr = [1, 123, 2, 4, 111, 7]; arr.sort(function(a, b) { if (a > b) { return 1; } else { return -1; } }); console.log(arr);`

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

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

## Пример

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

`let arr = [1, 123, 2, 4, 111, 7]; arr.sort(function(a, b) { return a - b; }); console.log(arr);`

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

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

## Пример

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

`let arr = [1, 123, 2, 4, 111, 7]; arr.sort(function(a, b) { return b - a; }); console.log(arr);`

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

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

## Пример

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

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

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

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

## Пример

А теперь давайте отсортируем массив объектов по ключу `'two'`:

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

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

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

## Пример

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

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

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

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

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

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

← →
↑
en ru