Sobes.tech
Junior

Hogyan változtatható meg egy tömb elemeinek sorrendje?

sobes.tech MI

Válasz az MI-től

A tömb elemeinek sorrendjének megváltoztatásához több megközelítés is létezik:

  1. reverse(): A tömb helyben módosítja az elemek sorrendjét, megfordítva azt.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr most [5, 4, 3, 2, 1]
    
  2. sort(): Helyben rendezi a tömböt. Alapértelmezés szerint szövegként rendezi. Számok esetén egy összehasonlító függvényt kell átadni.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Alapértelmezett (szövegként)
    // arr most [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Növekvő sorrend
    // arrNum most [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Csökkenő sorrend
    // arrNum most [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Új tömb létrehozása a módosított sorrenddel: Ha el akarja kerülni az eredeti tömb módosítását, akkor a módszerek kombinációját használhatja.

    • Másolat reverse()-szel:

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Másolat készítése és megfordítása
      // reversedArr most [5, 4, 3, 2, 1]
      // az arr változatlan [1, 2, 3, 4, 5]
      
    • Másolat sort()-tal:

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Másolat készítése és rendezés
      // sortedArr most [1, 1, 3, 4, 5]
      // az arr változatlan [3, 1, 4, 1, 5]
      
    • Véletlenszerű sorrend (bonyolultabb eset): Ha egy adott sorrendre van szükség, amely nem eredményezhető egyszerű rendezéssel vagy megfordítással, akkor manuálisan kell átrendezni az elemeket vagy összetettebb algoritmusokat használni. Például keverés (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]]; // Elemcsere (destructuring)
      }
      // shuffledArr most véletlenszerűen összekevert
      // az arr változatlan [1, 2, 3, 4, 5]
      

A módszer kiválasztása a kívánt eredménytől (fordított sorrend, rendezés, véletlenszerű sorrend) és attól függ, hogy az eredeti tömb módosuljon-e vagy sem, illetve hogy új tömb legyen-e létrehozva.