JavaScript Array Sort - Как да използваме JS методи за сортиране (с примери за кодове)

В JavaScript можем лесно да сортираме елементите на масив с вграден метод, наречен функция sort ().

Типовете данни (низ, число и т.н.) обаче могат да се различават от един масив до друг. Това означава, че използването само на метода sort () не винаги е подходящо решение.

В тази публикация ще научите как да сортирате масив в JavaScript, като използвате метода sort () за низове и числа.

Масив от низове

Нека започнем с низове:

const teams = ['Real Madrid', 'Manchester Utd', 'Bayern Munich', 'Juventus'];

Когато използваме метода sort (), елементите по подразбиране ще бъдат сортирани във възходящ ред (от A до Z):

teams.sort(); // ['Bayern Munich', 'Juventus', 'Manchester Utd', 'Real Madrid']

Ако предпочитате да сортирате масива в низходящ ред, вместо това трябва да използвате метода reverse ():

teams.reverse(); // ['Real Madrid', 'Manchester Utd', 'Juventus', 'Bayern Munich']

Масив от числа

Сортирането на числата за съжаление не е толкова просто. Ако приложим метода на сортиране директно към масив от числа, ще видим неочакван резултат:

const numbers = [3, 23, 12]; numbers.sort(); // --> 12, 23, 3

Защо методът sort () не работи за числа

Всъщност работи, но този проблем се случва, защото JavaScript сортира числата по азбучен ред. Нека да обясня това подробно.

Нека помислим за A = 1, B = 2 и C = 3.

const myArray = ['C', 'BC', 'AB']; myArray.sort(); // [AB, BC, C]

Като пример, ако имаме три низа като C (3), BC (23) и AB (12), JavaScript ще ги сортира като AB, BC и C във възходящ ред, което е азбучно правилно.

JavaScript обаче ще сортира числата (отново по азбучен ред) като 12, 23 и 3, което е неправилно.

Решение: Функцията за сравнение

За щастие можем да поддържаме метода sort () с основна функция за сравнение, която ще свърши работа:

function(a, b) {return a - b}

За щастие методът на сортиране може да сортира отрицателни, нулеви и положителни стойности в правилния ред. Когато методът sort () сравнява две стойности, той изпраща стойностите към нашата функция за сравнение и сортира стойностите според върнатата стойност.

  • Ако резултатът е отрицателен, a се сортира преди b.
  • Ако резултатът е положителен, b се сортира преди a.
  • Ако резултатът е 0, нищо не се променя.

Всичко, от което се нуждаем, е да използваме функцията за сравнение в метода sort ():

const numbers = [3, 23, 12]; numbers.sort(function(a, b){return a - b}); // --> 3, 12, 23

Ако искаме да сортираме числата в низходящ ред, този път трябва да извадим втория параметър (b) от първия (a):

const numbers = [3, 23, 12]; numbers.sort(function(a, b){return b - a}); // --> 23, 12, 3

Увийте

Така че, както можем да видим, сортирането на елементите на масив може да се извърши лесно в JavaScript с метода sort (), ако знаем как да го използваме правилно. Надявам се, че моят пост ще ви помогне да разберете как да използвате метода sort () в JavaScript по правилния начин.

Ако искате да научите повече за уеб разработката, не се колебайте да посетите моя канал в Youtube.

Благодаря ви, че прочетохте!