Sobes.tech
Junior

Cum se schimbă ordinea elementelor într-un array?

sobes.tech AI

Răspuns de la AI

Pentru a schimba ordinea elementelor dintr-un array, se pot folosi mai multe abordări:

  1. reverse(): Modifică array-ul la fața locului, inversând ordinea elementelor.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr devine acum [5, 4, 3, 2, 1]
    
  2. sort(): Sortează array-ul la fața locului. În mod implicit, sortează ca șiruri de caractere. Pentru sortare numerică, trebuie transmisă o funcție de comparație.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Sortare implicită (ca șiruri)
    // arr devine [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Sortare crescătoare
    // arrNum devine [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Sortare descrescătoare
    // arrNum devine [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Crearea unui nou array cu ordinea modificată: Dacă doriți să evitați modificarea array-ului original, puteți folosi o combinație de metode.

    • Copie cu reverse():

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Creăm o copie și o inversăm
      // reversedArr devine [5, 4, 3, 2, 1]
      // arr rămâne neschimbat [1, 2, 3, 4, 5]
      
    • Copie cu sort():

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Creăm o copie și sortăm
      // sortedArr devine [1, 1, 3, 4, 5]
      // arr rămâne neschimbat [3, 1, 4, 1, 5]
      
    • Ordin aleatoriu (situație mai complexă): Dacă este necesar un ordin specific care nu rezultă din sortare sau inversare simplă, poate fi necesar să reorganizați manual elementele sau să folosiți algoritmi mai complecși. De exemplu, amestecarea (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]]; // Schimb de elemente (destructurare)
      }
      // shuffledArr este acum amestecat aleatoriu
      // arr rămâne [1, 2, 3, 4, 5]
      

Alegerea metodei depinde de rezultatul dorit (ordonare inversă, sortare, ordine aleatorie) și dacă array-ul original trebuie modificat sau dacă trebuie creat unul nou.