Общей потребностью при работе с массивами в JavaScript является возможность сортировки в определенном порядке.
Как легко отсортировать массив в JavaScript?
Я хочу показать вам, как правильно использовать метод массива JavaScript sort(). Как следует из названия метода массива JavaScript, sort() сортирует массив.
Массив сортировки JavaScript: по умолчанию
По умолчанию содержимое массива будет отсортировано в виде строк в порядке возрастания, от меньшего к большему.
Если у нас есть массив строк, которые нам нужно отсортировать по алфавиту, мы можем просто применить sort(). В противном случае нам нужно будет передать функцию сравнения, которая является необязательным параметром.
Массив сортировки JavaScript: функция сравнения
Функция сравнения может быть записана одним из двух способов. Первый — это функциональное выражение, которое явно возвращает значение. Во втором примере используется синтаксис ES6 для неявного возврата функции.
С помощью функции compareFunction можно изменить порядок сортировки по умолчанию. Функция должна возвращать положительное, отрицательное или нулевое значение. Затем значения сортируются на основе возвращаемого значения.
- Если минус b возвращает отрицательное значение, значение a будет отсортировано перед значением b.
- Если минус b возвращает положительное значение, значение b будет отсортировано перед значением a.
- Если результат равен 0, порядок сортировки не изменится.
Функция сравнения будет сравнивать все значения в массиве по два за раз, соответствующим образом изменяя порядок. Давайте используем это в качестве примера: array.sort( (a, b) =› { a — b }. У нас есть значения «a» и «b», и мы сравниваем минус b, чтобы отсортировать от низшего к высшему. .
Давайте рассмотрим несколько примеров и посмотрим, как мы можем применить то, что мы только что узнали. Первый массив, который мы рассмотрим, — это массив со строками: pets.
let pets = ["dog", "cat", "rabbit", "hamster"]
Как отсортировать этот массив по алфавиту?
Поскольку это массив строк, мы можем легко отсортировать этот массив, применив метод сортировки непосредственно к массиву. Помните, что по умолчанию содержимое массива будет отсортировано как строки по возрастанию или, в данном случае, по алфавиту.
pets.sort() ==> ["cat", "dog", "hamster", "rabbit"]
А массив чисел? Как отсортировать этот массив оценок от наибольшего к наименьшему? От меньшего к большему?
let grades = [88, 94, 72, 99, 53, 77]
Поскольку массив по умолчанию отсортирован как строки, нам нужно будет передать функцию сравнения в качестве параметра, чтобы убедиться, что массив отсортирован правильно.
Чтобы отсортировать массив оценок от наибольшей к наименьшей, мы передадим в функцию два параметра: a и b.
Чтобы отсортировать от большего к меньшему, мы хотим вернуть значение параметра b минус a. Если b минус a возвращает положительное значение, b будет отсортировано перед a. Если b минус a возвращает отрицательное значение, a будет отсортировано перед b.
let grades = [88, 94, 72, 99, 53, 77]
//Sort the array from highest to lowest grades.sort((a, b) => b - a)
Highest to Lowest [ 99, 94, 88, 77, 72, 53 ]
Чтобы отсортировать массив в обратном порядке, от меньшего к большему, мы вернем значение a минус b.
let grades = [88, 94, 72, 99, 53, 77]
//Sort the following array from lowest to highest grades.sort((a, b) => a - b)
Lowest to Highest [ 53, 72, 77, 88, 94, 99 ]
Это должно дать вам отличную основу для того, чтобы начать использовать метод сортировки массива в вашем коде. Есть и более сложные примеры, которые мы могли бы обсудить, но пока давайте придерживаться основного!
Первоначально опубликовано на https://jamiepittman.com 28 июля 2020 г.