Sobes.tech
Junior

Kuidas muuta elementide järjekorda massiivis?

sobes.tech AI

Vastus AI-lt

Massiivi elementide järjekorra muutmiseks võite kasutada mitmeid lähenemisviise:

  1. reverse(): Muudab massiivi kohapeal, pöörates elementide järjekorra ümber.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr on nüüd [5, 4, 3, 2, 1]
    
  2. sort(): Sorteerib massiivi kohapeal. Vaikimisi sorteerib see stringidena. Numbrilise sortimise jaoks tuleb edastada võrdlusfunktsioon.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Vaikimisi sorteerimine (nagu stringid)
    // arr on nüüd [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Kasvavas järjekorras
    // arrNum on nüüd [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Kahanevas järjekorras
    // arrNum on nüüd [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Uue massiivi loomine muutunud järjekorraga: Kui soovite vältida algse massiivi muutmist, saate kasutada meetodite kombinatsioone.

    • Kopeeri reverse()-ga:

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Kopeerib ja pöörab
      // reversedArr on nüüd [5, 4, 3, 2, 1]
      // arr jääb samaks [1, 2, 3, 4, 5]
      
    • Kopeeri sort()-ga:

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Kopeerib ja sorteerib
      // sortedArr on nüüd [1, 1, 3, 4, 5]
      // arr jääb samaks [3, 1, 4, 1, 5]
      
    • Spetsiifiline järjekord (väga keeruline juhtum): Kui vaja on spetsiifilist järjekorda, mis ei tulene lihtsast sorteerimisest või pööramisest, võib olla vaja elemente käsitsi ümber paigutada või kasutada keerukamaid algoritme. Näiteks segamine (shuffle):

      const arr = [1, 2, 3, 4, 5];
      const shuffledArr = [...arr];
      for (let i = shuffledArr.length - 1; i > 0; i--) {
          const j = Math.floor(Math.random() * (i + 1));
          [shuffledArr[i], shuffledArr[j]] = [shuffledArr[j], shuffledArr[i]]; // Elementide vahetamine (struktureerimine)
      }
      // shuffledArr on nüüd juhuslikult segatud
      // arr jääb samaks [1, 2, 3, 4, 5]
      

Valik sõltub soovitud tulemusest (vastupidine järjekord, sorteerimine, juhuslik järjekord) ning sellest, kas algne massiiv peab muutuma või mitte.