Sobes.tech
Junior

Jak změnit pořadí prvků v poli?

sobes.tech AI

Odpověď od AI

Pro změnu pořadí prvků v poli lze použít několik přístupů:

  1. reverse(): Změní pole na místě, obrácením pořadí prvků.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr je nyní [5, 4, 3, 2, 1]
    
  2. sort(): Seřadí pole na místě. Výchozí třídění je jako řetězce. Pro číselné třídění je třeba předat srovnávací funkci.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Výchozí třídění (jako řetězce)
    // arr je nyní [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Vzestupné třídění
    // arrNum je nyní [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Sestupné třídění
    // arrNum je nyní [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Vytvoření nového pole s upraveným pořadím: Pokud chcete zabránit změně původního pole, můžete použít kombinaci metod.

    • Kopie s reverse():

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Vytvoříme kopii a obrátíme ji
      // reversedArr je nyní [5, 4, 3, 2, 1]
      // arr zůstává nezměněno [1, 2, 3, 4, 5]
      
    • Kopie s sort():

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Vytvoříme kopii a seřadíme
      // sortedArr je nyní [1, 1, 3, 4, 5]
      // arr zůstává nezměněno [3, 1, 4, 1, 5]
      
    • Libovolný pořadí (složitější případ): Pokud je požadován specifický pořadí, které není výsledkem jednoduchého třídění nebo obrácení, může být nutné prvky ručně přeuspořádat nebo použít složitější algoritmy. Například míchání (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]]; // Výměna prvků (destructuring)
      }
      // shuffledArr je nyní náhodně promíchaný
      // arr zůstává [1, 2, 3, 4, 5]
      

Volba metody závisí na požadovaném výsledku (obrácený pořadí, třídění, libovolné pořadí) a na tom, zda má být původní pole změněno nebo vytvořeno nové.