Ich habe ein assoziatives Array in Javascript:
var dictionary = {
"cats": [1,2,3,4,5],
"dogs": [6,7,8,9,10]
};
Wie bekomme ich die Schlüssel dieses Wörterbuchs? dh ich will
var keys = ["cats", "dogs"];
7 Jahre später bearbeiten: Nur um die Terminologie korrekt zu machen - es gibt kein "assoziatives Array" in Javascript - dies ist technisch gesehen nur ein object
und es sind die Objektschlüssel, die wir wollen.
javascript
arrays
Simon_Weaver
quelle
quelle
Antworten:
Sie können verwenden:
Object.keys(obj)
Beispiel:
Siehe unten stehende Informationen zur Browserunterstützung. Es wird in Firefox 4.20, Chrome 5, IE9 unterstützt. Der folgende Link enthält ein Code-Snippet, das Sie hinzufügen können, wenn
Object.keys()
es in Ihrem Browser nicht unterstützt wird.https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
quelle
Versuche dies:
hasOwnProperty
wird benötigt, weil es möglich ist, Schlüssel in das Prototypobjekt von einzufügendictionary
. Normalerweise möchten Sie jedoch nicht, dass diese Schlüssel in Ihre Liste aufgenommen werden.Wenn Sie dies beispielsweise tun:
und dann mache eine
for...in
Schleife überdictionary
, du wirsta
undb
, aber du wirst auch bekommenc
.quelle
keys.push(key);
. Sie ziehen (und deklarieren es einfach) nur aus dem globalen Namespace. :)Es ist die for..in Aussage .
quelle
dictionary.hasOwnProperty(key)
Sie sonst Methoden aus der Prototypenkette erhalten.Nur eine kurze Anmerkung: Seien Sie vorsichtig bei der Verwendung von for..in, wenn Sie eine Bibliothek (jQuery, Prototyp usw.) verwenden, da die meisten von ihnen Methoden zu erstellten Objekten (einschließlich Wörterbüchern) hinzufügen.
Dies bedeutet, dass beim Überlaufen von Methoden Methodennamen als Schlüssel angezeigt werden. Wenn Sie eine Bibliothek verwenden, lesen Sie die Dokumentation und suchen Sie nach einem Abschnitt mit Aufzählungen, in dem Sie die richtigen Methoden für die Iteration Ihrer Objekte finden.
quelle
Einfache JQUERY-Methode.
Dies ist, was ich benutze
DictionaryObj als das Javascript-Wörterbuch-Objekt, das Sie durchlaufen möchten. Wert, Schlüssel natürlich sind die Namen von ihnen im Wörterbuch.
quelle
Ich verwende derzeit die Antwort von Rob de la Cruz
und in einer früh geladenen Datei sind einige Codezeilen von anderen Stellen im Internet entlehnt, die den Fall alter Versionen von Skriptinterpreten abdecken, in die Object.keys nicht integriert sind.
Ich denke, dies ist das Beste aus beiden Welten für große Projekte: einfacher moderner Code und abwärtskompatible Unterstützung für alte Browserversionen usw.
Tatsächlich wird die Lösung von JW in die Funktion aufgenommen, wenn die Object.keys (obj) von Rob de la Cruz nicht nativ verfügbar sind.
quelle