Holen Sie sich alle Schlüssel eines JavaScript-Objekts
Lesezeit: 3 Minuten
Tischma
Ich habe mich gefragt, ob es eine schnelle Möglichkeit gibt, Schlüssel eines assoziativen Arrays in ein Array oder eine durch Kommas getrennte Liste mit JavaScript zu extrahieren (jQuery ist in Ordnung).
options = {key1: "value1", key2: "value2"};
Das Ergebnis sollte das Array sein:
["key1", "key2"]
oder nur eine Zeichenfolge:
"key1, key2"
Ich glaube du meintest ["key1","key2"] nicht {"key1","key2"}
– escarello
9. Dezember 2010 um 15:48 Uhr
mögliches Duplikat von How to list the properties of a javascript object
– Andi E
9. Dezember 2010 um 16:04 Uhr
Es ist. Schade, dass Array dort nie erwähnt wird.
– tischma
9. Dezember 2010 um 16:20 Uhr
Das liegt daran, dass es in JavaScript kein assoziatives Array gibt. Was Sie ein assoziatives Array nennen, ist ein Objekt mit einer Liste von Eigenschaften (daher wie man die Eigenschaften eines Javascript-Objekts auflistet). Aus diesem Grund befindet sich die native Methode zum Auflisten der Schlüssel auch auf der Object Objekt – Object.keys().
– Andi E
9. Dezember 2010 um 16:39 Uhr
Sie können leicht ein Array davon über a erhalten for Schleife, zum Beispiel:
var keys = [];
for(var key in options) {
if(options.hasOwnProperty(key)) { //to be safe
keys.push(key);
}
}
Sie können auch Schlüssel verwenden[keys.length] = Schlüssel; um IE sicher zu sein
– Ege Özcan
9. Dezember 2010 um 15:48 Uhr
Andi E
Die meisten der großen Browser haben diese Funktionalität jetzt eingebaut, die Methode ist Object.keys():
var keys = Object.keys(options);
//-> ["key1", "key2"]
Sie können dies auch mit einem kleinen Ausschnitt in Browsern implementieren, die dies nicht unterstützen:
Object.keys = Object.keys || (function () {
var hasOwnProperty = Object.prototype.hasOwnProperty;
return function (o) {
if (typeof o != "object" && typeof o != "function" || o === null)
throw new TypeError("Object.keys called on a non-object");
var result = [];
for (var name in o) {
if (hasOwnProperty.call(o, name))
result.push(name);
}
return result;
};
})();
Dieses Snippet funktioniert ähnlich wie das in Nick Cravers Beispiel, mit zwei Ausnahmen:
Es wird einen sinnvollen TypeError auslösen, wenn Sie etwas anderes als ein Objekt (oder ein “assoziatives Array”, wenn Sie möchten) übergeben.
Es wird ein lästiges DOM-bezogenes Problem in Internet Explorer umgehen, bei dem Sammlungen das nicht haben hasOwnProperty Methode.
Dies (und die anderen Antworten hier) umgehen jedoch keinen IE-Enumerationsfehler. Weitere Informationen und eine teilweise Umgehung dafür finden Sie in dieser Antwort hier.
Ich glaube du meintest
["key1","key2"]
nicht{"key1","key2"}
– escarello
9. Dezember 2010 um 15:48 Uhr
mögliches Duplikat von How to list the properties of a javascript object
– Andi E
9. Dezember 2010 um 16:04 Uhr
Es ist. Schade, dass Array dort nie erwähnt wird.
– tischma
9. Dezember 2010 um 16:20 Uhr
Das liegt daran, dass es in JavaScript kein assoziatives Array gibt. Was Sie ein assoziatives Array nennen, ist ein Objekt mit einer Liste von Eigenschaften (daher wie man die Eigenschaften eines Javascript-Objekts auflistet). Aus diesem Grund befindet sich die native Methode zum Auflisten der Schlüssel auch auf der
Object
Objekt – Object.keys().– Andi E
9. Dezember 2010 um 16:39 Uhr