ЈаваСцрипт Арраи сорт ()

Метода сортирања ЈаваСцрипт низа сортира ставке низа.

sort()Метод сортира елементе датог низа у одређеној узлазном или силазном редоследу.

Синтакса sort()методе је:

 arr.sort(compareFunction)

Овде је арр низ.

сорт () Параметри

sort()Метод узима у:

  • цомпареФунцтион (опционално) - Користи се за дефинисање прилагођеног редоследа сортирања.

Врати вредност из сорт ()

  • Враћа низ након сортирања елемената низа на месту (што значи да мења оригинални низ и да није направљена копија).

Пример 1: Сортирање елемената низа

Када цомпареФунцтион није прослеђен,

  • Сви undefinedелементи који нису низови прво се претварају у низове.
  • Ови низови се затим упоређују помоћу њихове вредности УТФ-16 кодне тачке.
  • Сортирање се врши у растућем редоследу.
  • Сви undefinedелементи су сортирани до краја низа.
 // 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)

Оутпут

 ('Адам', 'Бен', 'Данил', 'Фабиано', 'Јеффреи') ('Адам', 'Бен', 'Данил', 'Фабиано', 'Јеффреи') (1000, 14, 2, 50 , 7)

Овде можемо видети да је низ имена сортиран у растућем низу низа. На пример, Адам долази пре Данила јер „А“ долази испред „Д“.

Будући да се сви недефинисани елементи пре сортирања претварају у низове, Numberтипови података се сортирају тим редоследом.

Овде можемо видети да, иако је 1000 бројчано веће од 50 , долази на почетак сортиране листе. То је зато што је "1" <"5" .

Пример 2: Сортирање помоћу прилагођене функције

Када се успореди функција цомпареФунцтион,

  • Сви undefinedелементи који нису низ сортирани су према повратној вредности цомпареФунцтион.
  • Сви недефинисани елементи сортирани су до краја низа и за њих се не позива цомпареФунцтион.

Претпоставимо да желимо сортирати горњи низ имена тако да најдуже име долази на крају, уместо да га сортирамо по абецеди. То можемо учинити на следећи начин:

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

Оутпут

 ('Бен', 'Адам', 'Данил', 'Јеффреи', 'Фабиано')

Овде се сортирање заснива на логици a.length - b.length. То у основи значи да ће се ставка краће дужине појавити на почетку Array.

Прво да схватимо како опционално compareFunctionради.

Било која compareFunctionима следећу синтаксу:

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

sort()Метод упоређује све вредности низа пропуштањем две вредности истовремено до compareFunction. Два параметра а и б представљају ове две вредности.

compareFunctionТреба ретурн а Number. Ова враћена вредност користи се за сортирање елемената на следећи начин:

  • Ако је враћена вредност <0 , а се сортира пре б (а долази пре б).
  • Ако је враћена вредност> 0 , б се сортира пре а (б долази пре а).
  • Ако је враћена вредност == 0 , а и б остају непромењени у односу једно на друго.

У примеру 2 сортирамо низ користећи:

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

Овде:

  • Ако је а.ленгтх - б.ленгтх <0 , а долази испред б. На пример, „Адам“ долази пре „Јеффреи“ са 4 - 7 <0 .
  • Ако је а.ленгтх - б.ленгтх> 0 , б долази испред а. На пример, „Данил“ долази иза „Бен“ са 5 - 3> 0.
  • Ако је а.ленгтх - б.ленгтх == 0 , њихов положај је непромењен. На пример, релативни положај „Јеффреи“ и „Фабиано“ је непромењен јер је 7 - 7 == 0 .

Видимо да ово резултира сортирањем низова према њиховој дужини у растућем редоследу.

Пример 3: Нумеричко сортирање бројева

Будући да се сви недефинисани елементи пре сортирања претварају у низове, не можемо подразумевано да сортирамо бројеве користећи њихову нумеричку вредност.

Погледајмо како то можемо применити помоћу прилагођене функције.

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

Оутпут

 Узлазно - 2,7,14,50,1000 Силазно - 1000,50,14,7,2

У овом примеру сортирали смо низ користећи:

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

Ево,

  • Ако је а - б <0 , а долази испред б. На пример, 2 долази испред 7 као 2 - 7 <0 .
  • Ако је а - б> 0 , б долази испред а. На пример, 1000 долази након 50 као 1000 - 50> 0.

Можемо видети да ово резултира сортирањем бројева према њиховој растућој нумеричкој вредности.

Слично томе, можемо b - aих сортирати у опадајућем редоследу. Имајте на уму да такође можемо користити израз функције стрелице дефинисан у ЕС2015.

Такође можемо обрнути (силазни редослед) сортирани низ користећи уграђену reverse()методу низа . Да бисте сазнали више, посетите ЈаваСцрипт Арраи реверсе ().

Занимљиви Чланци...