Tablice asocjacyjne w Javascript teoretycznie nie występują, choć są często wykorzystywane przez programistów. Niektórzy niestety nie znają tego pojęcia, ale wszystko jest do nadrobienia.
W tym artykule będę się posługiwać skróconymi notacjami tworzenia tablic i obiektów:
var tablica=[]; var obiekt={};
Normalnie tablice są indeksowane liczbami. Liczby zawsze zaczynają się od 0. Tablica asocjacyjna różni się od zwykłej tablicy tym, że do indeksowania są wykorzystywane ciągi znaków:
tablica['elementTablicy']='jakiś tekst';
Jeśli w Javascript spróbujemy zrobić coś takiego ze zwykłą tablicą, to niestety wynik będzie inny niż spodziewany. Javascript przed przypisaniem wartości w tablicy, dokona konwersji w locie indeksu tekstowego na index liczbowy. W powyższym przypadku zamiast indeksu 'elementTablicy’ otrzymamy indeks 0.
var tablica=[]; tablica['elementTablicy']='jakaś wartość'; alert(tablica['elementTablicy']==tablica[0]? 'elementy mają taką samą wartość' : 'elementy mają różną wartość' );
Powyższy przykład wyświetli komunikat, że oba elementy mają taką samą wartość.
Tablice asocjacyjne w Javascript
Na szczęście jest prosty sposób na to by tablice asocjacyjne zagościły w Javascript.
W związku z tym, że obiekt Array może być indeksowany jedynie liczbami, należy użyć zwykłego obiektu. Możliwe jest to dzięki temu, że w Javascript są dwie możliwości odwoływania się do właściwości obiektów:
- jako właściwość obiektu
- jako element w tablicy
var obiekt={}; obiekt.właściwość='jakaś wartość'; alert(obiekt['właściwość']==obiekt.właściwość? 'elementy mają taką samą wartość' : 'elementy mają różną wartość' );
Ten oto przykład wyświetli komunikat, że oba elementy mają tą samą wartość.
W ten oto prosty sposób możemy używać obiektu jako tablicy asocjacyjnej w Javascript. Różnica polega jedynie na deklaracji.