Sobes.tech
Junior

Kaip pakeisti elementų tvarką masyve?

sobes.tech AI

Atsakymas iš AI

Norint pakeisti elementų tvarką masyve, galite naudoti keletą būdų:

  1. reverse(): Keičia masyvą vietoje, apverčiant elementų tvarką.

    const arr = [1, 2, 3, 4, 5];
    arr.reverse();
    // arr dabar yra [5, 4, 3, 2, 1]
    
  2. sort(): Rikiuoja masyvą vietoje. Pagal numatytuosius nustatymus rikiuoja kaip eilutes. Skaitmeninei rikiavimui reikia perduoti palyginimo funkciją.

    const arr = [3, 1, 4, 1, 5, 9, 2, 6];
    arr.sort(); // Numatytoji rikiuotė (kaip eilutės)
    // arr dabar yra [1, 1, 2, 3, 4, 5, 6, 9]
    
    const arrNum = [3, 1, 4, 1, 5, 9, 2, 6];
    arrNum.sort((a, b) => a - b); // Didėjimo tvarka
    // arrNum dabar yra [1, 1, 2, 3, 4, 5, 6, 9]
    
    arrNum.sort((a, b) => b - a); // Mažėjimo tvarka
    // arrNum dabar yra [9, 6, 5, 4, 3, 2, 1, 1]
    
  3. Sukurti naują masyvą su pakeista tvarka: Jei norite išvengti pirminio masyvo keitimo, galite naudoti metodų derinius.

    • Kopija su reverse():

      const arr = [1, 2, 3, 4, 5];
      const reversedArr = [...arr].reverse(); // Sukuriame kopiją ir apverčiame
      // reversedArr dabar yra [5, 4, 3, 2, 1]
      // arr lieka [1, 2, 3, 4, 5]
      
    • Kopija su sort():

      const arr = [3, 1, 4, 1, 5];
      const sortedArr = [...arr].sort((a, b) => a - b); // Sukuriame kopiją ir rūšiuojame
      // sortedArr dabar yra [1, 1, 3, 4, 5]
      // arr lieka [3, 1, 4, 1, 5]
      
    • Specialus tvarkas (labai sudėtingas atvejis): Jei reikalingas specifinis tvarkas, kuris nėra paprasto rūšiavimo ar apvertimo rezultatas, gali tekti rankiniu būdu pertvarkyti elementus arba naudoti sudėtingesnius algoritmus. Pavyzdžiui, maišymas (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]]; // Elementų keitimas (struktūrizavimas)
      }
      // shuffledArr dabar yra atsitiktinai sumaišytas
      // arr lieka [1, 2, 3, 4, 5]
      

Pasirinktas metodas priklauso nuo norimo rezultato (atvirkštinis tvarkas, rūšiavimas, atsitiktinis tvarkas) ir nuo to, ar turi būti pakeistas pirminis masyvas, ar sukurtas naujas.