![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Witam
Mam problem z tablicą asocjacyjną. Tablica ta ma następującą strukturę: Kod arr = new Array(); arr["pole1"] = "string"; arr["pole2"] = "string_2"; Wcześniej przy pomocy prototype zdefiniowałem dodatkowe funkcje dla obiektu Array. Pierwsza to find, a druga to remove. Problem pojawia się w momencie, gdy próbuję uzyskać dostęp do elementów tablicy przy pomocy For...In. Kod for(xx in arr) { alert(xx); } Pętla ta dołącza do tablicy arr zdefinowane przeze mnie funkcje i zamiast wyświetlić dwa alerty ("string" i "string_2"), wyświetla cztery ("find", "remove", "string" i "string_2"). Co jest tego przyczyną i w jaki sposób można temu zaradzić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pętla ta dołącza do tablicy arr zdefinowane przeze mnie funkcje nie bardzo rozumiem ten fragment. Skoro dodałeś wcześniej dodatkowe metody do obiektu Array, to czemu jeszcze dołączasz je tutaj. Poza tym, to co pokazałeś to nie jest tablica asocjacyjna. W JS nie ma czegoś takiego jak tablice asocjacyjne. To co widzimy w twoim przykładzie, to dodanie do obiektu arr właściwości pole1 i pole2. Nie są to elementy tablicy, ale właścwości obiektu. Jeżeli chcesz osiągnąć coś na wzór tablicy asocjacyjnej, powinieneś posłużyć się obiektem. Kod var assocArray = new Object; assocArray['pole1'] = 'string'; // lub var assocArray = new Object; assocArray.pole1 = 'string'; // lub var assocArray = {'pole1':'string', 'pole2':'string2'}; zajrze jeszcze wieczorem w domu ściągawek, ale z tego co pamiętam, to właśnie tak to wygląda. pozdr. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 17:28 |