Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Problem z obiektem
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam, mam pewien problem z obiektem, który powstaje przez użycie eval() na JSONie. Dla każdego usera tak on wygląda (kod):

Kod
"1":{"posx":"0","posy":"0"}


Jest to bardzo uproszczona wersja, ale wystarczy żeby wytłumaczyć o co mi chodzi. Mam takich userów kilku i po użyciu eval() stworzony obiekt zapisuje zalozmy do metody map.objUsers

czyli to powyższego usera tak mógłbym się odnieść: (id = 1)

Kod
map.objUsers[id].posx;
map.objUsers[id].posy;


i teraz mam taki problem - jak "wybrać" tego usera znając tylko jego posx i posy, a nie wiedząc nic o id?
Go to the top of the page
+Quote Post
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Może pętlą?

Przechodzisz pętlą przez wszystkie właściwości posx i posy i sprawdzasz, dla jakiego id są równe Twoim danym.

Ten post edytował Hazel 1.01.2009, 13:22:41
Go to the top of the page
+Quote Post
Skie
post
Post #3





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Ale co sprawdzę pętlą nie znając id? Najwyżej mogę takie coś zrobić:

Kod
for (i in map.objUsers) { }


a musiałbym coś w tym stylu, ale taki zapis raczej nie istnieje:

Kod
for (i in map.objUsers[]) { }


...A może chodzi Ci o to żeby za pocą pierwszej iteracji stworzyc dodatkowy obiekt z kluczem jako posx i posy a wartością jako id? Myślałem o tym, ale raczej nieoptymalne jest - po co mi 2 takie same niemal obiekty?

Ten post edytował Skie 1.01.2009, 13:41:07
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zakładam, że na jednej pozycji może być tylko jeden user. W takim razie może lepiej stworzyć tablicę (ewentualnie jej kopię) w której klucz to np. x_y, a wartość to id ludka. Przykład:
tab[12_34] = 5;
Czyli ludek o id=5 znajduje się na pozycji x=12, y=34.
Go to the top of the page
+Quote Post
Skie
post
Post #5





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Tak, ale jedyny sposób na stworzenie takiej tablicy to iteracja obiektu objUsers i sprawdzanie po kolei każdego posx i posy, oraz ew. nadpisywaniu danych w tablicy. Obecnie takie rozwiązanie funkcjonuje u mnie, ale ono strasznie obciąża całość. Bez pętli tworzącej tą tablicę wszystko działa płynie na każdej przeglądarce, a wraz z nią to już lekko się tnie skrypt na FF.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 28.08.2025 - 17:15