Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] sortowanie tablicy
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
lukaskolista
Witam. Mam tablice obiektow
  1. <script type="text/javascript">
  2. var tablica = [];
  3. tablica[0] = {name: 'obiekt1', x:4, y:3};
  4. tablica[1] = {name: 'obiekt2', x:7, y:1};
  5. tablica[2] = {name: 'obiekt3', x:1, y: 6};

chcialbym ja posortowac najpierw malejaco wedlug y, a pozniej rosnaco wedlug x. Niestety tablica.sort() sie nie sprawdzi, poniewaz sortuje tylko wedlug jednego parametru, a ja potrzebuje cos na wzor sortowania przez SQL

  1. SELECT ... FROM ... ORDER BY y DESC, x ASC

Nie mam nawet pomyslu, jak sie do tego zabrac. Z gory dziekuje za pomoc
skowron-line
http://www.w3schools.com/jsref/jsref_sort.asp funkcja sort przyjmuje jako parametr nazwę funkcji która Ci to posortuje tak jak to napiszesz.
lukaskolista
Wlasnie chodzi mi o to, jak to napisac. W przykladach z linku, ktory wyslales jest sortowanie tylko wedlug 1 parametru, a potrzebuje najpierw wedlug y, a pozneij wedlug x, przy czym

  1. <script type="text/javascript">
  2. tablica.sort(function(a,b) {
  3. return b - a;
  4. });
  5. tablica.sort(function(a,b) {
  6. return a - y;
  7. });
nie dziala, bo przy sortowaniu wedlug x (drugie sortowanie) sortuje cala tablice, a nie wewnatrz y
nospor
NIe umiesz Dac IF y=y to sortuj po X?

Kod
<script type="text/javascript">
function sortNumber(a,b)
{
    if (b.y==a.y)
        return a.x-b.x;
    else
        return b.y-a.y;
}

var tablica = [];
tablica[0] = {name: 'obiekt1', x:4, y:3};
tablica[1] = {name: 'obiekt2', x:7, y:1};
tablica[2] = {name: 'obiekt3', x:1, y: 6};
tablica[3] = {name: 'obiekt3', x:3, y: 6};
tablica[4] = {name: 'obiekt2', x:3, y:1};
tablica[5] = {name: 'obiekt2', x:2, y:1};

tablica.sort(sortNumber)
</script>
lukaskolista
Dziekuje, dziala. Nie, nie umiem, jestem mlodym programista i po prostu nie robilem nigdy sortowania w JS, w ogole bardzo malo korzystalem z JS
nospor
Akurat problem był logiczny i niezależny od jezyka programowania.
IF y=y to X robi się tak samo w każdym języku wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.