Sobes.tech
Junior

Kako promeniti redosled elemenata u nizu?

sobes.tech АИ

Одговор од АИ

Za promenu reda elemenata u nizu možete koristiti nekoliko pristupa:

  1. reverse(): Menja niz na mestu, preokrećući redosled elemenata.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr sada je [5, 4, 3, 2, 1]
    
  2. sort(): Sortira niz na mestu. Podrazumevano sortira kao stringove. Za numeričku sortu potrebno je proslediti funkciju poređenja.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Podrazumevano sortiranje (kao stringovi)
    // arr sada je [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Sortiranje uzlazno
    // arrNum sada je [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Sortiranje silazno
    // arrNum sada je [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Kreiranje novog niza sa promenjenim redom: Ako želite da izbegnete promenu originalnog niza, možete koristiti kombinaciju metoda.

    • Kopija sa reverse():

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Kreiramo kopiju i preokrećemo je
      // reversedArr sada je [5, 4, 3, 2, 1]
      // arr ostaje [1, 2, 3, 4, 5]
      
    • Kopija sa sort():

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Kreiramo kopiju i sortiramo je
      // sortedArr sada je [1, 1, 3, 4, 5]
      // arr ostaje [3, 1, 4, 1, 5]
      
    • Slučajni red (složeniji slučaj): Ako je potreban specifičan red koji nije rezultat jednostavnog sortiranja ili preokreta, možda će biti potrebno ručno preurediti elemente ili koristiti složenije algoritme. Na primer, mešanje (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]]; // Zamena elemenata (destrukturiranje)
      }
      // shuffledArr sada je nasumično pomešan
      // arr ostaje [1, 2, 3, 4, 5]
      

Izbor metode zavisi od željenog rezultata (obrnuti red, sortiranje, slučajni red) i od toga da li treba da bude izmenjen originalni niz ili kreiran novi.