Razvrščanje polja JavaScript ()

Metoda JavaScript Array sort () razvrsti elemente polja.

sort()Postopek razvrsti elemente danega niza v določeni naraščajočem ali padajočem zaporedju.

Sintaksa sort()metode je:

 arr.sort(compareFunction)

Tu je arr matrika.

sort () Parametri

sort()Metoda je v:

  • compareFunction (neobvezno) - Uporablja se za določanje vrstnega reda razvrščanja po meri.

Vrnitev vrednosti iz sort ()

  • Vrne matriko po razvrščanju elementov matrike na mestu (kar pomeni, da spremeni prvotno matriko in kopija ni narejena).

Primer 1: Razvrščanje elementov polja

Ko primerjavaFunction ni sprejeta,

  • Vsi undefinedelementi, ki niso matrike, se najprej pretvorijo v nize.
  • Nato se ti nizi primerjajo z uporabo vrednosti kodne točke UTF-16.
  • Razvrščanje poteka po naraščajočem vrstnem redu.
  • Vsi undefinedelementi so razvrščeni do konca polja.
 // sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); // returns the sorted array console.log(names.sort()); // modifies the array in place console.log(names); var priceList = (1000, 50, 2, 7, 14); priceList.sort(); // Number is converted to string and sorted console.log(priceList)

Izhod

 ('Adam', 'Ben', 'Danil', 'Fabiano', 'Jeffrey') ('Adam', 'Ben', 'Danil', 'Fabiano', 'Jeffrey') (1000, 14, 2, 50 , 7)

Tu lahko vidimo, da je niz imen razvrščen v naraščajočem vrstnem redu niza. Adam na primer pride pred Danila, ker je "A" pred "D".

Ker se vsi nedefinirani elementi pred razvrščanjem pretvorijo v nize, so Numbertipi podatkov razvrščeni v tem vrstnem redu.

Tu lahko vidimo, da čeprav je številka 1000 večja od 50 , je na začetku razvrščenega seznama. To je zato, ker je "1" <"5" .

Primer 2: Razvrščanje z uporabo funkcije po meri

Ko je primerjana funkcija,

  • Vsi undefinedelementi, ki niso array, so razvrščeni glede na vrnjeno vrednost compareFunction.
  • Vsi nedefinirani elementi so razvrščeni do konca matrike in zanje ni pozvan funkcijo compareFunction.

Recimo, da želimo zgornjo matriko imen razvrstiti tako, da je najdaljše ime zadnje, namesto da bi ga razvrstili po abecedi. To lahko storimo na naslednji način:

 // custom sorting an array of strings var names = ("Adam", "Jeffrey", "Fabiano", "Danil", "Ben"); function len_compare(a, b)( return a.length - b.length; ) // sort according to string length names.sort(len_compare); console.log(names);

Izhod

 ('Ben', 'Adam', 'Danil', 'Jeffrey', 'Fabiano')

Tu sortiranje temelji na logiki a.length - b.length. V bistvu pomeni, da se bo element s krajšo dolžino pojavil na začetku Array.

Najprej razumemo, kako compareFunctiondeluje neobvezno .

Vsak compareFunctionima naslednjo sintakso:

 function (a, b)( // sorting logic // return a Number )

sort()Metoda primerja vse vrednosti matrike, ki poteka dve vrednosti hkrati na compareFunction. Parametra a in b predstavljata ti dve vrednosti.

Moral compareFunctionbi vrniti a Number. Ta vrnjena vrednost se uporablja za razvrščanje elementov na naslednji način:

  • Če je vrnjena vrednost <0 , je a razvrščeno pred b (a je pred b).
  • Če je vrnjena vrednost> 0 , je b razvrščen pred a (b je pred a).
  • Če je vrnjena vrednost == 0 , a in b ostaneta nespremenjena med seboj.

V primeru 2 matriko razvrstimo z uporabo:

 function len_compare(a, b)( return a.length - b.length; )

Tukaj:

  • Če je a.length - b.length <0 , je a pred b. Na primer, "Adam" je pred "Jeffrey" kot 4 - 7 <0 .
  • Če je a.length - b.length> 0 , je b pred a. Na primer, "Danil" je za "Ben" 5 - 3> 0.
  • Če je a.length - b.length == 0 , je njihov položaj nespremenjen. Na primer, relativni položaj "Jeffrey" in "Fabiano" je nespremenjen, ker je 7 - 7 == 0 .

Vidimo lahko, da to povzroči razvrščanje nizov glede na njihovo dolžino v naraščajočem vrstnem redu.

Primer 3: Numerično razvrščanje števil

Ker se vsi nedefinirani elementi pred razvrščanjem pretvorijo v nize, številk privzeto ne moremo razvrstiti z uporabo njihove številske vrednosti.

Poglejmo, kako lahko to uporabimo s pomočjo funkcije po meri.

 // numeric sorting // define array var priceList = (1000, 50, 2, 7, 14); // sort() using function expression // ascending order priceList.sort(function (a, b) ( return a - b; )); // Output: Ascending - 2,7,14,50,1000 console.log("Ascending - " + priceList); // sort() using arrow function expression // descending order priceList.sort((a, b) => b - a); // Output: Descending - 1000,50,14,7,2 console.log("Descending - " + priceList);

Izhod

 Naraščajoče - 2,7,14,50,1000 Padajoče - 1000,50,14,7,2

V tem primeru smo matriko razvrstili z uporabo:

 function (a, b) ( return a - b; )

Tukaj,

  • Če je a - b <0 , je a pred b. Na primer, 2 je pred 7 kot 2 - 7 <0 .
  • Če je a - b> 0 , je b pred a. Na primer, 1000 pride po 50 kot 1000 - 50> 0.

Vidimo lahko, da to povzroči razvrščanje števil glede na naraščajočo številčno vrednost.

Podobno jih lahko b - arazvrstimo po padajočem vrstnem redu. Upoštevajte, da lahko uporabimo tudi izraz funkcije puščice, opredeljen v ES2015.

Razvrščeno polje lahko tudi obrnemo (padajoči vrstni red) z uporabo vgrajene reverse()metode polja . Če želite izvedeti več, obiščite JavaScript Array reverse ().

Zanimive Članki...