Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[jQuery] sort array i zachowanie tablicy bazowej

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

[jQuery] sort array i zachowanie tablicy bazowej

Post 30.04.2018, 11:19:31

Witam, mam problem, potrzebuję posortować tablicę obiektów i jednocześnie mieć "dostęp" do tablicy nie posortowanej. Niestety gdy używam metody sort to w efekcie tablica bazowa też ulega posortowaniu. Jak to zrobić by mieć z jednej tablicy 2 inne?
Mam taki kod:
jQuery:
Kod: Zaznacz cały
var arrobj = [
{val: "val1", index: "1", class: "przeslany"},
{val: "val2", index: "2", class: "zwrocony"},
{val: "val3", index: "3", class: "przeslany"}];

var basearr = arrobj;

var arrobj_desc = sortowanie(arrobj, 'desc');
var arrobj_asc = sortowanie(arrobj, 'asc');

function sortowanie($tab, $kierunek)
{
  return $tab.sort(function(a, b)
  {
      if (a.class == b.class) { return 0; }
     
      var warunek = a.class < b.class;
      if($kierunek == 'asc')
      {
         warunek = a.class > b.class;
      }
      if (warunek)
      {
          return 1;
      }
      else
      {
          return -1;
      }
  });
}

jQuery.each( basearr, function(i, val) {
   $.each(val, function( k, v ) {
    $( "#one" ).append( k + " = " + v + " | ");
  });
   $( "#one" ).append("<br />");
});

jQuery.each( arrobj_asc, function(i, val) {
   $.each(val, function( k, v ) {
    $( "#two" ).append( k + " = " + v + " | ");
  });
   $( "#two" ).append("<br />");
});

jQuery.each( arrobj_desc, function(i, val) {
   $.each(val, function( k, v ) {
    $( "#three" ).append( k + " = " + v + " | ");
  });
   $( "#three" ).append("<br />");
});



w efekcie mam taki wynik:
val = val1 | index = 1 | class = przeslany |
val = val3 | index = 3 | class = przeslany |
val = val2 | index = 2 | class = zwrocony |

val = val1 | index = 1 | class = przeslany |
val = val3 | index = 3 | class = przeslany |
val = val2 | index = 2 | class = zwrocony |

val = val1 | index = 1 | class = przeslany |
val = val3 | index = 3 | class = przeslany |
val = val2 | index = 2 | class = zwrocony |

czyli 3 tablice tak samo posortowane, a oczekiwałabym, że pierwsza jest bez zmian, jak bazowa, a dwie kolejne są posortowane tak index: 1,3,2 i index: 2,3,1
olimpia_ona
Posty: 29
Dołączył(a): 06.04.2006
Lokalizacja: Elbląg

Re: [jQuery] sort array i zachowanie tablicy bazowej

Post 30.04.2018, 12:48:39

Sklonuj pierwszą tablicę przed sortowaniem. arr.slice(0).sort(funkcja_sortujaca
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19764
Dołączył(a): 14.04.2002

Re: [jQuery] sort array i zachowanie tablicy bazowej

Post 30.04.2018, 16:34:09

Tego mi brakowało. Dziękuje za pomoc :)
olimpia_ona
Posty: 29
Dołączył(a): 06.04.2006
Lokalizacja: Elbląg


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 51441 zarejestrowanych użytkowników.
Najnowszy użytkownik: jonman65


Nasi użytkownicy napisali:

  • 937643 wiadomości
  • w 247399 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)