Sobes.tech
Junior

Jak zmienić kolejność elementów w tablicy?

sobes.tech AI

Odpowiedź od AI

Aby zmienić kolejność elementów w tablicy, można użyć kilku podejść:

  1. reverse(): Zmienia tablicę na miejscu, odwracając kolejność elementów.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr teraz jest [5, 4, 3, 2, 1]
    
  2. sort(): Sortuje tablicę na miejscu. Domyślnie sortuje jako teksty. Dla sortowania numerycznego trzeba podać funkcję porównującą.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Domyślne sortowanie (jako teksty)
    // arr teraz jest [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Sortowanie rosnące
    // arrNum teraz jest [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Sortowanie malejące
    // arrNum teraz jest [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Tworzenie nowej tablicy z odwróconą kolejnością: Jeśli chcesz uniknąć modyfikacji oryginalnej tablicy, możesz użyć kombinacji metod.

    • Kopia z reverse():

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Tworzymy kopię i odwracamy
      // reversedArr teraz jest [5, 4, 3, 2, 1]
      // arr pozostaje bez zmian [1, 2, 3, 4, 5]
      
    • Kopia z sort():

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Tworzymy kopię i sortujemy
      // sortedArr teraz jest [1, 1, 3, 4, 5]
      // arr pozostaje bez zmian [3, 1, 4, 1, 5]
      
    • Dowolny porządek (bardziej skomplikowany przypadek): Jeśli wymagana jest specyficzna kolejność, nie będąca wynikiem prostego sortowania lub odwracania, może być konieczne ręczne przestawianie elementów lub użycie bardziej skomplikowanych algorytmów. Na przykład, tasowanie (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]]; // Zamiana elementów (destrukturyzacja)
      }
      // shuffledArr jest teraz losowo wymieszany
      // arr pozostaje bez zmian [1, 2, 3, 4, 5]
      

Wybór metody zależy od pożądanego rezultatu (odwrócony porządek, sortowanie, porządek losowy) oraz od tego, czy oryginalna tablica powinna być zmodyfikowana, czy też powinna zostać utworzona nowa.