Metoda sort() pole JavaScript
The sort()> metoda v JavaScriptu uspořádá prvky pole na místě a vrátí seřazené pole. Ve výchozím nastavení seřadí prvky podle abecedy a považuje je za řetězce.
Pro numerické třídění však můžete poskytnout vlastní porovnávací funkci. Tato funkce určuje kritéria třídění, což umožňuje přesnou kontrolu nad procesem třídění. `sort()` zvyšuje efektivitu a funkčnost aplikací JavaScript tím, že umožňuje organizovat prvky pole podle konkrétních požadavků profesionálním a formálním způsobem.
Syntax
arr.sort(compareFunction);
Parametry
-
array>: Pole, které se má seřadit. -
compareFunction>(Volitelné): Funkce, která definuje pořadí řazení. Pokud je vynechán, prvky pole jsou seřazeny podle jejich řetězcových bodů kódu Unicode.
Návratová hodnota
Tato metoda vrací odkaz na seřazené původní pole.
Příklady:
Příklad 1: Třídění pole řetězců
Tento příklad ukazuje použití funkce sort().
JavaScript // JavaScript to illustrate sort() function function func() { // Original string let arr = ['Geeks', 'for', 'Geeks'] console.log(arr); // Sorting the array console.log(arr.sort()); } func(); Výstup
[ 'Geeks', 'for', 'Geeks' ] [ 'Geeks', 'Geeks', 'for' ]
Vysvětlení:
The sort()> metoda přeskupuje prvky arr> pole abecedně, produkující výstup ['Geeks', 'Geeks', 'for']> .
Příklad 2: Řazení pole čísel bez funkce porovnání
Tady, seřadit () metoda uspořádá prvky pole ve vzestupném pořadí.
JavaScript // JavaScript to illustrate sort() function function func() { //Original string let arr = [2, 5, 8, 1, 4] //Sorting the array console.log(arr.sort()); } func(); Výstup
[ 1, 2, 4, 5, 8 ]
Vysvětlení:
The sort()> metoda je volána na poli čísel [2, 5, 8, 1, 4]> . The sort()> metoda seřadí prvky abecedně, protože není k dispozici žádná porovnávací funkce. Výstup tedy bude [1, 2, 4, 5, 8]> , který je řazen abecedně na základě řetězcových reprezentací čísel.
Příklad 3: Řazení číselné hodnoty bez funkce porovnání
Zde třídíme číselnou hodnotu bez porovnávací funkce
Javascript let numbers = [20, 5.2, -120, 100, 30, 0] console.log(numbers.sort())
Výstup
[ -120, 0, 100, 20, 30, 5.2 ]
Vysvětlení:
Když použijete sort()> metoda bez funkce porovnání, JavaScript ve výchozím nastavení třídí prvky pole jako řetězce, což nemusí vždy přinést očekávané výsledky pro číselná pole. Pojďme si rozebrat proces řazení:
- JavaScript převede každý prvek pole na řetězec.
- Poté porovná jednotky kódu UTF-16 každého znaku v řetězcích a seřadí je na základě bodové hodnoty kódu Unicode.
Co se stane s vaším polem:
- Čísla se převedou na řetězce:
['20', '5.2', '-120', '100', '30', '0']>. - Při abecedním řazení
-120>je na prvním místě, protože->má nižší bodovou hodnotu kódu Unicode než číslice (0>na9>). Pak přijde0>, následován100>,20>,30>, a5.2>.
Příklad 4: Řazení číselné hodnoty pomocí funkce porovnání
Neočekávanou chybu, která se vyskytla ve výše uvedeném příkladu, můžeme vyřešit pomocí metody sort() pro numerické hodnoty pomocí následující funkce porovnání.
Javascript let numbers = [20, 5.2, -120, 100, 30, 0]; /* Logic: 20 - (5.2) = +ve =>5.2 by bylo umístěno před 20, 20 - (-120) = +ve => -120 by bylo umístěno před 20, 20 - (100) = -ve => 100 by bylo umístěno po 20, 20 - (30) = - ve => 30 by bylo umístěno za 20, 20 - (0) = +ve => 0 by bylo umístěno před 20, Podobně pro každý prvek zkontrolujeme a umístíme je podle toho v iteracích. */ funkce porovnej(a, b) { return a - b; } console.log(čísla.sort(porovnat)); Výstup
[ -120, 0, 5.2, 20, 30, 100 ]
Vysvětlení:
- The
compare>funkce odečítáb>za>. Pokud je výsledek negativní,a>přichází dříveb>v seřazeném poli; pokud pozitivní,b>přichází dřívea>; pokud je nula, jejich relativní pořadí zůstane nezměněno. - Poskytnutím této vlastní porovnávací funkce pro
sort()>JavaScript třídí polenumbers>na základě číselných hodnot jeho prvků.
Projděte si to prosím Jak seřadit číselné pole pomocí JavaScriptu? , abyste věděli, jak funguje funkce řazení pole javascript
Máme kompletní seznam metod Javascript Array, pro kontrolu si je prosím projděte toto Javascript Array Kompletní reference článek.
Podporované prohlížeče:
- Google Chrome
- Okraj
- internet Explorer
- Firefox
- Opera
- Safari