Junior
Jak byste setřídili pole čísel?
sobes.tech AI
Odpověď od AI
// Použití metody sort() s porovnávací funkcí
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Vzestupné řazení
// Pro sestupné řazení:
// numbers.sort((a, b) => b - a);
Metoda sort() v JavaScriptu setřídí prvky pole na místě. Ve výchozím nastavení převádí prvky na řetězce a řadí je lexikograficky. Pro správné řazení čísel je nutné předat sort() porovnávací funkci.
Porovnávací funkce přijímá dva argumenty, a a b.
- Pokud funkce vrátí záporné číslo,
apřijde předb. - Pokud vrátí kladné číslo,
bpřijde předa. - Pokud vrátí 0, pořadí prvků se nemění.
Pro řazení čísel vzestupně se používá (a, b) => a - b. Pokud je a menší než b, výsledek je záporný a a přijde před b.
Pro řazení sestupně se používá (a, b) => b - a. Pokud je b menší než a, výsledek je kladný a b přijde před a.
Další metody (méně časté pro jednoduché číselné pole, ale užitečné):
-
Metoda
localeCompare()pro řetězce s čísly:// Nedoporučuje se pro čistá čísla, ale může být použita // pokud jsou čísla reprezentována jako řetězce a je třeba zohlednit lokalitu. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Seřadí jako [ "1", "2", "10" ] -
Vytvoření kopie pole před řazením:
// Pokud chcete zachovat původní pole const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // nebo // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);