JavaScript masīva kārtošana ()

JavaScript Array sort () metode kārto masīva vienumus.

sort()Metode sakārto elementus konkrētā masīva atrodas konkrētā augošā vai dilstošā secībā.

Metodes sintakse sort()ir šāda:

 arr.sort(compareFunction)

Lūk, arr ir masīvs.

sort () Parametri

sort()Metode ņem in:

  • salīdzinātFunkcija (pēc izvēles) - to izmanto, lai definētu pielāgotu kārtošanas kārtību.

Atgriezt vērtību no kārtošanas ()

  • Atgriež masīvu pēc masīva elementu sakārtošanas vietā (tas nozīmē, ka tas maina sākotnējo masīvu un netiek kopēts).

1. piemērs: Masīva elementu kārtošana

Ja salīdzinātFunkcija nav nodota,

  • Visi undefinedelementi, kas nav masīva, vispirms tiek pārveidoti par virknēm.
  • Pēc tam šīs virknes tiek salīdzinātas, izmantojot to UTF-16 koda punkta vērtību.
  • Šķirošana tiek veikta augošā secībā.
  • Visi undefinedelementi tiek sakārtoti līdz masīva beigām.
 // 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)

Rezultāts

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

Šeit mēs varam redzēt, ka nosaukumu masīvs ir sakārtots virknes augošā secībā. Piemēram, Ādams nāk Danila priekšā, jo “A” ir pirms “D”.

Tā kā visi nenoteiktie elementi pirms to šķirošanas tiek pārveidoti par virknēm, Numberdatu tipi tiek sakārtoti šajā secībā.

Šeit mēs varam redzēt, ka, lai arī skaitliski 1000 ir lielāks par 50 , tas ir sakārtotā saraksta sākumā. Tas ir tāpēc, ka "1" <"5" .

2. piemērs: kārtošana, izmantojot pielāgoto funkciju

Kad salīdzināšanas funkcija ir nodota,

  • Visi undefinedelementi, kas nav masīvi, tiek sakārtoti pēc salīdzināmās funkcijas atgriešanās vērtības.
  • Visi nenoteiktie elementi tiek sakārtoti līdz masīva beigām, un tiem nav izsaukta salīdzināšanas funkcija.

Pieņemsim, ka mēs gribam sakārtot iepriekšminēto nosaukumu masīvu tā, lai garākais nosaukums būtu pēdējais, nevis kārtotu alfabētiskā secībā. Mēs to varam izdarīt šādi:

 // 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);

Rezultāts

 ('Bens', 'Ādams', 'Danils', 'Džefrijs', 'Fabiano')

Šeit šķirošana ir balstīta uz loģiku a.length - b.length. Tas būtībā nozīmē, ka vienums ar mazāku garumu parādīsies Array.

Vispirms sapratīsim, kā darbojas izvēles opcija compareFunction.

Jebkuram compareFunctionir šāda sintakse:

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

sort()Metode salīdzina visu vērtības masīva, izejot divas vērtības vienlaicīgi uz compareFunction. Abi parametri a un b attiecīgi apzīmē šīs divas vērtības.

compareFunctionBūtu jārāda Number. Šī atgrieztā vērtība tiek izmantota, lai kārtotu elementus šādā veidā:

  • Ja atgrieztā vērtība ir <0 , a tiek sakārtota pirms b (a nāk pirms b).
  • Ja atgrieztā vērtība> 0 , b tiek sakārtots pirms a (b nāk pirms a).
  • Ja atgrieztā vērtība == 0 , a un b nemainās attiecībā pret otru.

2. piemērā mēs kārtojam masīvu, izmantojot:

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

Šeit:

  • Ja a.length - b.length <0 , a nāk pirms b. Piemēram, "Adam" ir priekšā "Jeffrey" kā 4 - 7 <0 .
  • Ja a.length - b.length> 0 , b nāk pirms a. Piemēram, "Danil" nāk pēc "Ben" kā 5 - 3> 0.
  • Ja a.length - b.length == 0 , to pozīcija nemainās. Piemēram, "Džefrija" un "Fabiano" relatīvā pozīcija nemainās, jo 7 - 7 == 0 .

Mēs varam redzēt, ka tā rezultātā virknes tiek sakārtotas pēc to garuma augošā secībā.

3. piemērs: skaitļu kārtošana skaitliski

Tā kā visi nenoteiktie elementi pirms to kārtošanas tiek pārveidoti par virknēm, pēc noklusējuma numurus nevar kārtot, izmantojot to skaitlisko vērtību.

Apskatīsim, kā mēs to varam ieviest, izmantojot pielāgotu funkciju.

 // 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);

Rezultāts

 Augošā secībā - 2,7,14,50,1000 Dilstošā secībā - 1000,50,14,7,2

Šajā piemērā mēs sakārtojām masīvu, izmantojot:

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

Šeit,

  • Ja a - b <0 , a nāk pirms b. Piemēram, 2 ir pirms 7, jo 2 - 7 <0 .
  • Ja a - b> 0 , b nāk pirms a. Piemēram, 1000 nāk pēc 50, jo 1000 - 50> 0.

Mēs varam redzēt, ka tā rezultātā numuri tiek kārtoti pēc to skaitliskā pieauguma.

Līdzīgi mēs varam b - atos kārtot dilstošā secībā. Ņemiet vērā, ka mēs varam izmantot arī bultiņas funkcijas izteiksmi, kas definēta ES2015.

Mēs varam arī mainīt (dilstošā secībā) sakārtoto masīvu, izmantojot iebūvēto masīvu reverse()metodi. Lai uzzinātu vairāk, apmeklējiet JavaScript masīva reverso ().

Interesanti raksti...