![]() |
![]() ![]() |
![]() |
![]()
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
![]() 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:
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 ![]() Pozdrawiam. |
|
|
![]()
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 -------------------- |
|
|
![]()
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 ![]() Ten post edytował HellRider 14.10.2008, 03:52:42 |
|
|
![]()
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ą -------------------- |
|
|
![]() ![]()
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.) ![]() Nie wiedziałem jak dokładnie działa metoda .sort, ani że parametry jej funkcji są elementami pierwszego wymiaru tablicy (bez komentarza ![]() 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 ![]() Pozdrawiam. [ZAMYKAMY] Ten post edytował HellRider 14.10.2008, 10:18:08 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:27 |