Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Sortowanie w/g indeksu podtablicy
HellRider
post 12.10.2008, 23:40:20
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 7
Dołączył: 12.09.2008
Skąd: localhost

Ostrzeżenie: (0%)
-----


Z racji pierwszego postu witam forumowiczów smile.gif

Problem mam dość nietypowy, tak uważam po przeczytaniu kilkunastu zbiorów informacji, które mogły dać mi solucję, a nie dały.
Dopiero po tym piszę tutaj. Potrzebuję pomocy przy napisaniu funkcji sortującej tablicę wielowymiarową według wartości "x" w "tablica[n][x]".
Tablica jest generowana następująco:

  1. <?php
  2. PRZYPOMINAM, JAVASCRIPT, NIE PHP
  3. ________________________________
  4.  
  5. for (n=0; n<max; n++){
  6.  Tablica[n] = new Array();
  7.  Tablica[n]['imie'] = ...
  8.  Tablica[n]['nazwisko'] = ...
  9.  Tablica[n]['wiek'] = ...
  10.  Tablica[n]['wzrost'] = ...
  11.  Tablica[n]['waga'] = ...
  12.  Tablica[n]['mail'] = ...
  13. }
  14. ?>


Wykropkowałem wartości, ponieważ nie są istotne.
Muszę mieć możliwość sortowania pierwszego wymiaru według np.: [n]['imie'] lub [n]['wzrost'].
Brak pomysłów, proszę o sugestie smile.gif

Pozdrawiam.
Go to the top of the page
+Quote Post
lord_t
post 13.10.2008, 21:44:50
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Wykorzystaj funkcję podawaną do sort: w niej porównaj wartości które chcesz. Obczaj:

http://republika.onet.pl/13965,16016,13,04...ursy.html#16016


--------------------
Go to the top of the page
+Quote Post
HellRider
post 14.10.2008, 03:48:07
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 7
Dołączył: 12.09.2008
Skąd: localhost

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź, jednak po drodze przez gąszcze opisów i przykładów, tudzież JS reference,
spotkałem metodę .sort i stosowanie z nią funkcji, jednak JS to moja słaba strona, szczerze słabizna,
nie mam pojęcia jak napisać funkcję dla metody .sort, by ta dla każdego N pobrała dane
z pola X w tablica[N][X].
Z tym teraz muszę poprosić o pomoc. Napisałem już dla tego skryptu większość kodu, tworzenie
tablicy z pobranymi danymi, generowanie nowych danych w elemencie, zdarzenia, podmianę
elementów HTML, tylko to sortowanie blokuje mi release skryptu sad.gif

Ten post edytował HellRider 14.10.2008, 03:52:42
Go to the top of the page
+Quote Post
lord_t
post 14.10.2008, 09:08:00
Post #4





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Kod
max1=5;
litery=['a','b','c','f','g'];
tab = new Array();

for (n=0; n<max1; n++){
tab[n] = new Array();
tab[n]['imie'] = ""+litery[Math.round(Math.random()*4)]+litery[Math.round(Math.random()*4)];
tab[n]['nazwisko'] = "bbb";
tab[n]['wiek'] = 10-n+Math.round(Math.random()*1000);
}

tab.sort(function(el1,el2){
    if(el1['imie']<el2['imie']) return -1;
    else if(el1['imie']>el2['imie']) return 1;
    else return 0;

/*
Jej zadaniem jest zwrócenie wartości ujemnej, jeśli element1 jest mniejszy od element2, wartości dodatniej,
jeśli element1 jest większy od element2 lub też wartości 0, jeśli element1 i element2 są sobie równe.
Gdyby zatem istniała konieczność posortowania tablicy liczb w porządku malejącym, można by zastosować kod:
*/
});
s='';
for (n=0; n<max1; n++){
    s+="\n"+tab[n]['imie'] +" "+tab[n]['nazwisko']+" "+tab[n]['wiek'];
}
alert(s);


Tym testowałem, ale w sumie to masz już rozwiązanie na dłoni. Należy się 10 zeta;p

Uwagi:
-testowane na FF3
-dla polskich znaków trzeba by napisać własną funkcję porównującą


--------------------
Go to the top of the page
+Quote Post
HellRider
post 14.10.2008, 10:15:04
Post #5





Grupa: Zarejestrowani
Postów: 57
Pomógł: 7
Dołączył: 12.09.2008
Skąd: localhost

Ostrzeżenie: (0%)
-----


Chodziło o to:
Kod
tab.sort(function(el1,el2){
    if(el1['imie']<el2['imie']) return -1;
    else if(el1['imie']>el2['imie']) return 1;
    else return 0;
});


Rety, takie banalne, że aż przeszło pod nosem, wielkie dzięki, klikam "Pomógł",
do tego mały kredyt dla lord_t|php.pl w skrypcie (Dodatek do gry Ikariam
rozszerzający możliwości w pewnych widokach, spaprane w v.0.2.8.) smile.gif

Nie wiedziałem jak dokładnie działa metoda .sort, ani że parametry jej funkcji
są elementami pierwszego wymiaru tablicy (bez komentarza sciana.gif )

Nawiasem mówiąc, napisałem "Wykropkowałem wartości, ponieważ nie są istotne.",
skrypt "wpinam w stronę" za pomocą greasemonkey w FF3, pobieram stringi
z elementów HTML, wtedy je sortuje smile.gif

Pozdrawiam.

[ZAMYKAMY]

Ten post edytował HellRider 14.10.2008, 10:18:08
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:27