JavaScript Array Sort - Sådan bruges JS-sorteringsmetoder (med kodeeksempler)

I JavaScript kan vi nemt sortere elementerne i en matrix med en indbygget metode kaldet sorteringsfunktionen ().

Datatyper (streng, nummer osv.) Kan dog variere fra en matrix til en anden. Det betyder, at brugen af ​​sorteringsmetoden () alene ikke altid er en passende løsning.

I dette indlæg lærer du, hvordan man sorterer en matrix i JavaScript ved hjælp af metoden sort () til strenge og tal.

Array of Strings

Lad os starte med strenge:

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

Når vi bruger sorteringsmetoden (), sorteres elementerne i stigende rækkefølge (A til Z) som standard:

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

Hvis du foretrækker at sortere arrayet i faldende rækkefølge, skal du i stedet bruge metoden reverse ():

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

Array of Numbers

Sortering af numre er desværre ikke så simpelt. Hvis vi anvender sorteringsmetoden direkte til et talarray, vil vi se et uventet resultat:

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

Hvorfor sorteringsmetoden () ikke fungerer for tal

Faktisk fungerer det, men dette problem opstår, fordi JavaScript sorterer tal alfabetisk. Lad mig forklare dette detaljeret.

Lad os tænke på A = 1, B = 2 og C = 3.

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

For eksempel, hvis vi har tre strenge som C (3), BC (23) og AB (12), vil JavaScript sortere dem som AB, BC og C i stigende rækkefølge, som er alfabetisk korrekt.

JavaScript sorterer dog tallene (alfabetisk igen) som 12, 23 og 3, hvilket er forkert.

Løsning: Sammenlign funktionen

Heldigvis kan vi understøtte sort () -metoden med en grundlæggende sammenligningsfunktion, der gør tricket:

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

Sorteringsmetoden kan heldigvis sortere negative, nul og positive værdier i den rigtige rækkefølge. Når sorteringsmetoden () sammenligner to værdier, sender den værdierne til vores sammenligningsfunktion og sorterer værdierne efter den returnerede værdi.

  • Hvis resultatet er negativt, sorteres a før b.
  • Hvis resultatet er positivt, sorteres b før a.
  • Hvis resultatet er 0, ændres intet.

Alt, hvad vi har brug for, er at bruge sammenligningsfunktionen i sorteringsmetoden ():

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

Hvis vi vil sortere tallene i faldende rækkefølge, skal vi denne gang trække den anden parameter (b) fra den første (a):

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

Pak ind

Så som vi kan se, kan sortering af elementerne i en matrix let gøres i JavaScript med sort () -metoden, hvis vi ved, hvordan vi bruger det korrekt. Jeg håber, at mit indlæg hjælper dig med at forstå, hvordan du bruger sorteringsmetoden () i JavaScript på den rigtige måde.

Hvis du vil lære mere om webudvikling, er du velkommen til at besøge min Youtube-kanal.

Tak fordi du læste!