Общей потребностью при работе с массивами в 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 г.