Sortering i JavaScript | Forklart

Sortering i JavaScript | Forklart
JavaScript har en enorm mengde metoder og funksjoner for å fullføre visse oppgaver. Disse metodene hjelper når du sorterer en matrise. Sortering betyr å ordne et sett med verdier i en bestemt rekkefølge, det kan være enten stigende eller synkende rekkefølge. Ettersom matriser er en integrert del av programmeringen, er det en viktig og avgjørende oppgave å sortere dem. Det er mange trivielle algoritmer for å sortere matriser, men hvorfor gjør det harde arbeidet når JavaScript kommer med forhåndsdefinerte sorteringsmetoder.

Vi kommer til å sortere en matrise med strengverdier og numeriske verdier ved hjelp av innebygde JavaScript -funksjoner.

.sorter () Metode

De .sortere() Metoden brukes til å sortere en matrise. Rekkefølgen på den sorterte matrisen er alfabetisk oppstigende. Det fungerer best for strengverdier, men gir feil resultater når det gjelder numeriske verdier. Nå kommer spørsmålet hvorfor .sorter () -metoden fungerer ikke for numeriske verdier.

Å vite hvorfor .sorter () -metoden fungerer for strengene, men ikke for de numeriske verdiene, vi må først forstå hvordan .sorter () Metode fungerer.

Hvordan gjør .sorter () metodearbeid

De .sortere() Metoden fungerer ved å sammenligne strengens første tegn med den første tegnet fra neste verdi. Hvis karakterene er de samme, vil den sjekke det andre av både strengene og plassere den mindre først. Mindre avgjøres på grunnlag av alfabetisk rekkefølge, som i eksemplet ovenfor "C”Er mindre enn“F”.

Så når vi passerer dette “.sortere()”Metode to numeriske verdier som“ 200 ”og“ 65 ”. Denne funksjonen sammenligner de første tegnene (“2” av “200” og “6” av “65”) og returnerer “65” som det større tallet. I denne opplæringen vil vi imidlertid også gå gjennom et eksempel der vi vil sortere tall ved hjelp av .sortere() metode. La oss begynne med å diskutere og forstå syntaksen til .sortere() metode.

Syntaks

Syntaksen til .sorter () -metoden er ganske grunnleggende. Det er:

Array.sortere()

Returverdi: En sortert matrise.

La oss for eksempel ta en rekke med forskjellige gjenstander inni seg:

Array = ["Tabell", "stol", "glass", "mus", "laptop", "fan", "bil"];

For å sortere dette og vise utdataene skal vi bruke .sorter () metode inne i konsollen.Log () Metode, slik:

konsoll.Logg (matrise.sortere());

Det komplette kodebiten ville bli:

Array = ["Tabell", "stol", "glass", "mus", "laptop", "vifte", "bil"];
konsoll.Logg (matrise.sortere());

Kjør programmet for å observere utdataene:

.Omvendt () -funksjon

De .Omvendt () -funksjon sorterer ikke en matrise i noen rekkefølge. Imidlertid reverserer det plasseringen av elementer inne i matrisen. Noe som betyr at det siste elementet i en matrise blir det første elementet. Syntaksen er som:

Array.omvendt()

Hvis vi tar matrisen fra eksemplet ovenfor og prøver å reversere det ved å bruke .Omvendt () Metode da ville kodebiten være noe slikt.

Array = ["Tabell", "stol", "glass", "mus", "laptop", "vifte", "bil"];
konsoll.Logg (matrise.omvendt());

Utgangen er som:

Som du kan se, er elementene i en matrise nå i omvendt rekkefølge. Men hvordan sorterer vi faktisk en matrise i synkende rekkefølge?

Hvordan du sorterer matriseverdier i nedgangsrekkefølge?

Vel, vi må bruke en kombinasjon av .sortere() og .omvendt() metode. Vi sorterer først en matrise, og så bruker vi .omvendt() Metode for å sortere matrisen i synkende rekkefølge.

Dette høres litt forvirrende ut, så la oss prøve å observere et eksempel. For dette eksemplet, ta matrisen fra eksemplene ovenfor.

Array = ["Tabell", "stol", "glass", "mus", "laptop", "vifte", "bil"];

Nå som vi har en rekke helt tilfeldig rekkefølge. Det første trinnet er å sortere det, så la oss gjøre det: Bruke

Array.sortere()

Nå som matrisen er sortert, må vi snu det ved å bruke følgende linje:

Array.omvendt();

Det siste trinnet er å observere utdataene, og å gjøre at vi skal vise matrisen ved hjelp av konsoll.Logg() Metode som dette:

konsoll.logg (matrise);

Det komplette kodebiten er som

Array = ["Tabell", "stol", "glass", "mus", "laptop", "vifte", "bil"];
Array.sortere();
Array.omvendt();
konsoll.logg (matrise);

Utgangen er som:

Det er det, det er vårt utvalg sortert i synkende alfabetisk rekkefølge. La oss nå se hvordan du jobber med numeriske verdier.

Hvordan du sorterer numeriske verdier ved hjelp av .sorter () Metode

Som vi allerede har nevnt ovenfor, er .sortere() metoden gir ikke riktige resultater når det gjelder sortering av numeriske verdier, og det er fordi .sortere() Metode fungerer ved å sammenligne strenger, den anser numeriske verdier som strenger og sammenligner dem deretter.

La oss starte med å lage en rekke numeriske verdier. Som så.

Numberray = [2,3,4,6,66,100,25,33]

La oss nå observere utdataene ved å kjøre. sortere() metode på denne matrisen inne i konsoll.Logg() funksjon

konsoll.Logg (nummerArray.sortere());

Utgangen er som:

Som du kan se, er utfallet utenfor merket. Hvorfor er det slik?. Vel, vi har allerede forklart hvordan .sorter () Metode fungerer. Det som skjer er at det tar den første karakteren av strengen og sammenligner den med de første tegnene i neste verdi, selv om 100 er større enn 33. Men når du sammenligner de første tegnene, er “1” mindre enn “3”, og er derfor plassert før 33.

Så løser vi dette problemet? Vel, vi gjør det ved å bruke en sammenligningsfunksjon innenfor sorteringsfunksjonen. Sammenligningsfunksjonen er som:

funksjon (a, b)

Returner A-B

Vi tar "nummerArray”Fra eksemplet ovenfor og bruk denne sammenligne funksjonen på den for å observere utgangen.

NumberArray = [2, 3, 4, 6, 66, 100, 25, 33];
nummerArray.Sorter (funksjon (a, b)
returner A - B;
);
konsoll.logg (nummerArray);

Med dette får vi følgende utdata.

Som du ser, har vi endelig nummeret vårt sortert i synkende rekkefølge.

Hvordan du sorterer numeriske verdier i synkende rekkefølge?

Nå som vi er kjent med å sortere en numerisk matrise i stigende rekkefølge, kan vi begynne å prøve å sortere den i synkende rekkefølge. Akkurat som å prøve å sortere strenger i synkende rekkefølge, kan vi bruke den motsatte () metoden for å snu det numeriske sorterte matrisen slik:

NumberArray = [2, 3, 4, 6, 66, 100, 25, 33];
nummerArray.sorter (funksjon (x, y)
Returner x - y;
);
nummerArray.omvendt();
konsoll.logg (nummerArray);

Utgangen er som:

Imidlertid er det en annen måte å gjøre det på, og det er å endre returuttalelsen i sammenligningsfunksjonen. Endre uttalelsen til dette:

return b-a;

Etter det skriver vi ganske enkelt ut matrisen ved å bruke konsoll.Logg() metode. Det komplette kodebiten er som:

NumberArray = [2, 3, 4, 6, 66, 100, 25, 33];
nummerArray.sorter (funksjon (x, y)
return y - x;
);
konsoll.logg (nummerArray);

Utgangen vil være:

Hvordan sortere objektarrays i JavaScript

Se for deg at vi har en rekke objekter, for eksempel, la oss ta objekter av mennesker med navnet sitt og deres fødselsår.

Nå vil vi sortere dette utvalget av året de ble født. Vi har folkets objektarray som:

const People = [
Navn: "Albert", Yob: 1997,
Navn: "Dave", Yob: 2005,
Navn: "John", yob: 2000
];

Nå kan vi sortere dette objektets matrise ved hjelp av .sorter () og sammenligne funksjonen som:

mennesker.sorter (funksjon (x, y)
Returner x.yob - x.yob;
);

Nå er det siste å vise denne matrisen ved å bruke følgende kode:

konsoll.Logg ("Menneskene i aldersordre er som");
for (la i = 0; i <= people.length; i++)
konsoll.Logg (People [i].Navn + "er født i" + People [i].yob);

Det komplette kodebiten er som:

const People = [
Navn: "Albert", Yob: 1997,
Navn: "Dave", Yob: 2005,
Navn: "John", yob: 2000,
];
mennesker.sorter (funksjon (x, y)
Returner x.yob - y.yob;
);
konsoll.Logg ("Menneskene i aldersordre er som");
for (la i = 0; i <= people.length; i++)
konsoll.Logg (People [i].Navn + "er født i" + People [i].yob);

Når vi kjører filen får vi følgende utdata:

Som vi kan se, er alle objektene nå sortert basert på deres "yob" som er fødselen til personen.
Det er det for sortering i JavaScript.

Konklusjon

Sortering er en viktig del når du jobber med matriser. JavaScript kommer med forskjellige innebygde funksjoner som hjelper oss med å sortere matriseelementer. Vi lærte hvordan .sortere() Metoden fungerer i JavaScript, dens syntaks og dens returverdi. Videre lærte vi hvordan vi bruker kombinasjonen av .sortere() og .omvendt() Metode for å sortere matriser i synkende rekkefølge. Til slutt lærte vi hvordan vi kan bruke .sortere() Metode for sortering av numeriske verdier ved bruk av sammenligningsfunksjonen.