Метод sort - сортировка массива на JavaScript
Метод 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
,
который позволяет фильтровать элементы массива