Junior
Kuidas te sorteeriksite arvude massiivi?
sobes.tech AI
Vastus AI-lt
// Kasutame `sort()` meetodit koos võrdlusfunktsiooniga
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Sorteerimine kasvavalt
// Sorteerimiseks kahanevalt:
// numbers.sort((a, b) => b - a);
sort() meetod JavaScriptis sorteerib massiivi elemendid kohapeal. Vaikimisi teisendab see elemendid stringideks ja sorteerib leksikograafiliselt. Õige arvude sorteerimiseks tuleb sort() funktsioonile anda võrdlusfunktsioon.
Võrdlusfunktsioon võtab kaks argumenti, a ja b.
- Kui funktsioon tagastab negatiivse numbri, tuleb
aenneb. - Kui funktsioon tagastab positiivse numbri, tuleb
bennea. - Kui funktsioon tagastab 0, elementide järjekord ei muutu.
Arvude sorteerimiseks kasvavalt kasutatakse (a, b) => a - b. Kui a on väiksem kui b, on tulemus negatiivne ja a tuleb enne b.
Arvude sorteerimiseks kahanevalt kasutatakse (a, b) => b - a. Kui b on väiksem kui a, on tulemus positiivne ja b tuleb enne a.
Teised meetodid (vähem levinud lihtsate arvumassiivide puhul, kuid kasulikud):
-
localeCompare()meetod arvude stringidena:// Ei soovitata kasutada puhtalt arvude puhul, kuid võib kasutada // kui arvud on esitatud stringidena ja tuleb arvestada lokaalidega. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Sorteerib nagu [ "1", "2", "10" ] -
Massivi koopiate loomine enne sorteerimist:
// Kui soovite säilitada algse massiivi const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // või // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);