Sobes.tech
Junior

Kā jūs sakārtotu skaitļu masīvu?

sobes.tech AI

Atbilde no AI

// Izmanto `sort()` metodi ar salīdzināšanas funkciju
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Kārtošana pieaugošā secībā

// Lai kārtotu dilstošā secībā:
// numbers.sort((a, b) => b - a);

sort() metode JavaScript kārto masīva elementus vietā. Pēc noklusējuma tā pārveido elementus uz virkni un kārto leksikogrāfiski. Lai pareizi kārtotu skaitļus, jānodod sort() salīdzināšanas funkcija.

Salīdzināšanas funkcija pieņem divus argumentus, a un b.

  • Ja funkcija atgriež negatīvu skaitli, a būs pirms b.
  • Ja funkcija atgriež pozitīvu skaitli, b būs pirms a.
  • Ja funkcija atgriež 0, elementu kārtība nemainās.

Skaitļu kārtošanai pieaugošā secībā izmanto (a, b) => a - b. Ja a ir mazāks par b, rezultāts būs negatīvs, un a stāsies pirms b. Skaitļu kārtošanai dilstošā secībā izmanto (a, b) => b - a. Ja b ir mazāks par a, rezultāts būs pozitīvs, un b stāsies pirms a.

Citas metodes (mazāk bieži lietotas vienkāršiem skaitļu masīviem, bet noderīgas):

  • localeCompare() metode ar skaitļiem kā virknēm:

    // Nav ieteicams lietot tikai skaitļiem, bet var tikt izmantots
    // ja skaitļi ir kā virkne un jāņem vērā lokalizācija.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // Sakārtos kā [ "1", "2", "10" ]
    
  • Masyva kopijas izveide pirms kārtošanas:

    // Ja vēlaties saglabāt sākotnējo masīvu
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // vai
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);