Ich muss ein Wörterbuch in Javascript wie dieses machen
Ich erinnere mich nicht an die genaue Notation, aber es war so etwas wie:
states_dictionary={ CT=[alex,harry], AK=[liza,alex], TX=[fred, harry] ........ }
Gibt es so etwas in Javascript?
javascript
python
l - '' '' '' - '' '' '' '' '' '' ''
quelle
quelle
Antworten:
Dies ist ein alter Beitrag, aber ich dachte, ich sollte trotzdem eine illustrierte Antwort geben.
Verwenden Sie die Objektnotation von Javascript. Wie so:
Und um auf die Werte zuzugreifen:
oder Sie können die Javascript-Literalobjektnotation verwenden, wobei die Schlüssel nicht in Anführungszeichen gesetzt werden müssen:
quelle
Object.hasOwnProperty.call(dictionary, key)
(andernfalls der Benutzer einen Wert von eingeben valueOf unddictionary['valueOf']
gibt dieObject.valueOf()
Funktion zum Objekt Prototyp gehört , das ist wahrscheinlich nicht das, was Ihr Code erwarten würde - potenzielle Fehler oder Sicherheitsproblem ). Wenn der Schlüssel kein Zeichenfolgentyp ist, muss vorsichtig vorgegangen werden, da sonst die impliziten numerischen und toString-Konvertierungen Probleme verursachen. Der ES6-Map
Typ wurde entwickelt, um erweiterte Funktionen für Wörterbücher bereitzustellen.Bis 2015 (Veröffentlichung von ECMAScript 6) gab es in Javascript keine echten assoziativen Arrays. Seitdem können Sie das Map-Objekt als Robocat-Status verwenden. Schlagen Sie die Details in MDN nach . Beispiel:
Ohne Unterstützung für ES6 können Sie versuchen, Objekte zu verwenden:
Bei Objekten ist es jedoch nicht möglich, typische Array-Eigenschaften oder Methoden wie array.length zu verwenden. Zumindest ist es möglich, in einer for-in-Schleife auf das "Objekt-Array" zuzugreifen.
quelle
Mir ist klar, dass dies eine alte Frage ist, die jedoch in Google angezeigt wird, wenn Sie nach "Javascript-Wörterbüchern" suchen. Daher möchte ich zu den obigen Antworten hinzufügen, dass in ECMAScript 6 das offizielle
Map
Objekt eingeführt wurde, bei dem es sich um ein Wörterbuch handelt Implementierung:Im Gegensatz zu den normalen Objekten von Javascript ist jedes Objekt als Schlüssel zulässig:
quelle
dict = { key: value)
?Habe hier ein einfaches Wörterbuch in JS erstellt:
Die obige Implementierung kann nun verwendet werden, um ein Wörterbuch wie folgt zu simulieren:
Dies ist nur eine grundlegende Simulation. Es kann weiter optimiert werden, indem ein besserer Laufzeitalgorithmus implementiert wird, der in mindestens O (nlogn) Zeitkomplexität oder sogar weniger arbeitet. Wie Merge / Quick Sort auf Arrays und dann einige B-Suche nach Lookups. Ich habe nicht versucht oder nach dem Zuordnen einer Hash-Funktion in JS gesucht.
Außerdem können Schlüssel und Wert für das JSdict-Objekt in private Variablen umgewandelt werden, um hinterhältig zu sein.
Hoffe das hilft!
BEARBEITEN >> Nach der Implementierung des oben genannten habe ich die JS-Objekte persönlich als assoziative Arrays verwendet, die sofort verfügbar sind.
Aber ich würde gerne eine besondere Erwähnung über zwei Methoden machen , die tatsächlich hilfreich erwies es sich als eine bequeme hashtable Erlebnis zu machen.
Viz: dict.hasOwnProperty (Schlüssel) und lösche dict [Schlüssel]
Lesen Sie diesen Beitrag als gute Ressource für diese Implementierung / Verwendung. Dynamisches Erstellen von Schlüsseln im assoziativen JavaScript-Array
Vielen Dank!
quelle
Verwenden Sie JavaScript-Objekte. Sie können auf ihre Eigenschaften wie Schlüssel in einem Wörterbuch zugreifen. Dies ist die Grundlage von JSON. Die Syntax ähnelt Python-Wörterbüchern. Siehe: JSON.org
quelle
Eine alte Frage, aber ich musste kürzlich einen AS3> JS-Port erstellen. Aus Gründen der Geschwindigkeit habe ich ein einfaches Dictionary-Objekt im AS3-Stil für JS geschrieben:
http://jsfiddle.net/MickMalone1983/VEpFf/2/
Wenn Sie es nicht wussten, können Sie im AS3-Wörterbuch jedes Objekt als Schlüssel verwenden, anstatt nur Zeichenfolgen. Sie sind sehr praktisch, wenn Sie eine Verwendung für sie gefunden haben.
Es ist nicht so schnell wie ein natives Objekt, aber ich habe in dieser Hinsicht keine wesentlichen Probleme damit festgestellt.
API:
quelle
Firefox 13+ bietet eine experimentelle Implementierung des
map
Objekts ähnlich demdict
Objekt in Python. Technische Daten hier .Es ist nur in Firefox verfügbar, sieht aber besser aus als die Verwendung von Attributen von a
new Object()
. Zitat aus der Dokumentation:quelle