Wie kann ich dynamisch Schlüssel in assoziativen Javascript-Arrays erstellen?
Die gesamte Dokumentation, die ich bisher gefunden habe, besteht darin, bereits erstellte Schlüssel zu aktualisieren:
arr['key'] = val;
Ich habe so eine Schnur " name = oscar "
Und ich möchte mit so etwas enden:
{ name: 'whatever' }
Das heißt, ich teile die Zeichenfolge und erhalte das erste Element, und ich möchte das in ein Wörterbuch einfügen.
Code
var text = ' name = oscar '
var dict = new Array();
var keyValuePair = text.split(' = ');
dict[ keyValuePair[0] ] = 'whatever';
alert( dict ); // prints nothing.
javascript
associative-array
OscarRyz
quelle
quelle
Antworten:
Verwenden Sie das erste Beispiel. Wenn der Schlüssel nicht vorhanden ist, wird er hinzugefügt.
Öffnet ein Meldungsfeld mit 'oscar'.
Versuchen:
quelle
Irgendwie sind alle Beispiele, obwohl sie gut funktionieren, überkompliziert:
new Array()
, was ein Overkill (und ein Overhead) für ein einfaches assoziatives Array (AKA-Wörterbuch) ist.new Object()
. Funktioniert gut, aber warum all diese zusätzlichen Eingaben?Diese Frage ist mit "Anfänger" gekennzeichnet. Machen wir es uns einfach.
Die überaus einfache Möglichkeit, ein Wörterbuch in JavaScript zu verwenden oder "Warum hat JavaScript kein spezielles Wörterbuchobjekt?":
Ändern wir nun die Werte:
Das Löschen von Werten ist ebenfalls einfach:
quelle
Javascript hat keine assoziativen Arrays , sondern Objekte .
Die folgenden Codezeilen machen alle genau dasselbe - setzen Sie das Feld 'name' für ein Objekt auf 'orion'.
Es sieht so aus, als hätten Sie ein assoziatives Array, weil ein
Array
auch ein istObject
- obwohl Sie dem Array überhaupt keine Dinge hinzufügen, setzen Sie Felder für das Objekt.Nachdem dies geklärt ist, finden Sie hier eine funktionierende Lösung für Ihr Beispiel
quelle
In Reaktion auf MK_Dev kann man iterieren, aber nicht nacheinander. (Dafür wird natürlich ein Array benötigt)
Die schnelle Google-Suche zeigt Hash-Tabellen in Javascript an
Beispielcode für das Durchlaufen von Werten in einem Hash (über den oben genannten Link):
quelle
Originalcode (Ich habe die Zeilennummern hinzugefügt, damit ich darauf verweisen kann):
Fast dort...
trim
On-Text so machen, wie er istname = oscar
.trim
in Zeile 1=
jedes keyValuePair zu verwenden und zu kürzenFügen Sie nach 3 und vor 4 eine Zeile hinzu:
Zeile 4: Jetzt wird:
Zeile 5: Wechseln zu:
Ich versuche zu sagen, dass das
dict[keyValuePair[0]]
nicht funktioniert. Sie müssen eine Zeichenfolge festlegenkeyValuePair[0]
und diese als assoziativen Schlüssel verwenden. Nur so habe ich meine zum Arbeiten gebracht. Nachdem Sie es eingerichtet haben, können Sie entweder mit einem numerischen Index darauf verweisen oder Anführungszeichen eingeben.Hoffentlich hilft das.
quelle
Alle modernen Browser unterstützen eine Karte , bei der es sich um eine Schlüssel- / Wertdatenbeschränkung handelt. Es gibt mehrere Gründe, die die Verwendung einer Karte besser machen als ein Objekt:
Beispiel:
Wenn Sie möchten, dass Schlüssel, auf die nicht von anderen Objekten verwiesen wird, als Müll gesammelt werden, sollten Sie eine WeakMap anstelle einer Map verwenden.
quelle
Ich denke, es ist besser, wenn Sie gerade so erstellt haben
Weitere Informationen finden Sie hier
JavaScript-Datenstrukturen - Assoziatives Array
quelle
Dies ist in Ordnung, durchläuft jedoch alle Eigenschaften des Array-Objekts. Wenn Sie nur die Eigenschaften myArray.one, myArray.two ... durchlaufen möchten, versuchen Sie es so
Jetzt können Sie mit myArray ["one"] auf beide zugreifen und nur über diese Eigenschaften iterieren.
quelle
Array
undObject
nur mitObject
Bäumen arbeiten! Wunderbare Einsicht! Es ist sehr nützlich zu machenObject.getOwnPropertyNames(obj/array)
!}}
quelle