• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Assoziative Arrays in Javascript

S

Sempervivum

Guest
Hallo,
bzgl. assoziativer Arrays habe ich mich bisher nach SelfHTML gerichtet:
SelfHTML schrieb:
Im Gegensatz zu anderen Programmiersprachen gibt es in JavaScript keine assoziativen Arrays. Arrays in JavaScript erlauben den Zugriff auf die Elemente lediglich über Indexnummern. Man kann jedoch mit Hilfe von Object() das Verhalten eines assoziativen Arrays teilweise nachbauen.
Jetzt bin ich aber auf diese Seite gestoßen:
JavaScript: 5.5 Assoziative Arrays
Hier wird eindeutig geschrieben, dass es sehr wohl assoziative Arryas in Javascript gibt.
Was ist nun richtig?
Viele Grüße - Ulrich
 
Werbung:
Nach ein bisschen Recherche:

JavaScript hat keine "echten" assoziativen Arrays, man kann aber, wie auch bei selfHTML beschrieben ohne viel Trickserei welche imitieren. Das ganze hat natürlich Vor- und Nachteile, über die ich mir allerdings selbst noch nicht ganz klar geworden bin.

JavaScript - Objects as associative arrays erschien mir von den Erklärungen her am besten, aber eine ausführlichere Antwort hier im Forum von jemandem mit mehr Ahnung fände ich auch noch ganz schön.
 
Der gegebene Link, erzählt Müll.

PHP:
etwas["erstes"] = "Inhalt";
ist eine alternative Syntax für
PHP:
etwas.erstes = "Inhalt";

Nur weil es syntaktisch aussieht wie ein PHP-Array, ist es noch lange keins. Anscheinend ist dem Autoren dieses Textes nicht aufgefallen, dass die Einschränkungen daran liegen, dass es sich dabei nicht um das eigentliche Arrays handelt, sondern um Objekte.

PHP:
var etwas = new Array();
etwas[0] = "A";
etwas[1] = "B";
etwas["test"] = "Z";


alert(etwas.toString()); // A,B

alert(etwas.length); // 2

alert(etwas.test); // Z

Wenn du Strings als Key übergibst, wird dem Objekt ein neues Property hinzugefügt. Das ist alles.
 
Werbung:
Hallo und danke für die Antworten. Dann handelt es sich bei dem Link wohl um eine Fehlinformation.
 
Das Ganze ist jetzt schon fast eine Auslegungs-Sache ob es assoziative Arrays gibt. Denn in Javascript gibt es Arrays und Objekte. Wobei ein Objekt als assoziatives Array gedeutet werden kann.
Wie schon oben erwähnt gibt es zwei Schreibweisen um auf Objekte zuzugreifen. Du "Array-Schreibweise" (objekt['attribut']) bietet noch den Vorteil, dass man beliebige Zeichen für ein Attribut nehmen kann. So auch Leerzeichen.
Man kann ja folgendes ausprobieren:

Code:
var test = {};
test['anderes attribut'] = "Test";
alert(test['anderes attribut']);
 
Naja, nicht wirklich. Der Begriff Array assoziiert, dass hier ein Funktionalität vorliegt, die es in JS nicht gibt. Es ist wie schon gesagt einfach ein Objekt. Alle Objekte sind assoziative Arrays oder hash maps. Der Indexoperator wird lediglich als Zugriffsoperator auf die Schlüssel verwendet. Und ein einfaches Array ist nicht weiter als ein Objekt, dessen Schlüssel Zahlen sind.
 
Werbung:
Zurück
Oben