Sobes.tech
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 a enne b.
  • Kui funktsioon tagastab positiivse numbri, tuleb b enne a.
  • 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);