Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> for(x in arr), Tablica asocjacyjna w JS
batman
post
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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
siemakuba
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 17:28