![]() |
![]() ![]() |
![]() |
![]()
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? |
|
|
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.08.2025 - 17:15 |