976 Stimmen

Wie listet man die Eigenschaften eines JavaScript-Objekts auf?

Angenommen, ich erstelle ein Objekt wie folgt:

var myObject =
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"};

Was ist der beste Weg, um eine Liste der Eigenschaftsnamen abzurufen? d.h. ich möchte am Ende mit einigen variablen "Schlüssel", so dass:

keys == ["ircEvent", "method", "regex"]

3 Stimmen

Ein bisschen Off-Topic, aber wenn Sie underscore.js verwenden: _.keys(myJSONObject)

5 Stimmen

TL;DR: Wenn Sie nur aufzählbare Eigenschaften wünschen: Object.keys(obj) Manchmal möchte man auch nicht aufzählbare Eigenschaften haben. Denken Sie daran, wenn Sie dies tun! Um sie zu erhalten, verwenden Sie Object.getOwnPropertyNames(obj) stackoverflow.com/a/32413145/1599699

17voto

Matt Punkte 20778

Ich bin ein großer Fan der Dump-Funktion.

http://ajaxian.com/archives/javascript-variable-dump-in-coldfusion alt text

1 Stimmen

+1 weil ich mit der Absicht hierher kam, etwas Ähnliches zu bauen (wenn auch nicht so gut).

1 Stimmen

netgrow.com.au/assets/files/dump/dump.zip nicht gefunden Wie kann ich Dump-Javascript herunterladen?

0 Stimmen

@Kiquenet jedes Mal, wenn ich so etwas bauen wollte, habe ich mich mit dem normalen Objektinspektor begnügt. Wenn Sie das in HTML gerendert haben wollen, gibt es Dinge wie npm-Module . Ehrlich gesagt, ich wollte etwas Besseres als das, was auf dem Bild zu sehen ist, aber ich habe es nie geschafft, es zu konzipieren. Es ist beschissen, Objekte im Inspektor zu durchsuchen, aber Heuristiken, die versuchen, aus beliebigen Objekten eine Bedeutung abzuleiten (z. B. Arrays von Objekten in Tabellen mit Spalten sortieren), funktionieren in der Praxis nicht immer.

15voto

sbonami Punkte 1773

Könnte es mit jQuery wie folgt tun:

var objectKeys = $.map(object, function(value, key) {
  return key;
});

10voto

qwerty_jones Punkte 91

Dies funktioniert in den meisten Browsern, sogar im IE8, und es sind keine Bibliotheken erforderlich. var i ist Ihr Schlüssel.

var myJSONObject =  {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}; 
var keys=[];
for (var i in myJSONObject ) { keys.push(i); }
alert(keys);

2 Stimmen

Ihre Antwort scheint denen ähnlich zu sein, die bereits gepostet wurden, haben Sie noch etwas hinzuzufügen?

10voto

zeacuss Punkte 2503

Wenn Sie nur die Elemente, nicht aber die Funktionen abrufen wollen, kann Ihnen dieser Code helfen

this.getKeys = function() {

    var keys = new Array();
    for(var key in this) {

        if( typeof this[key] !== 'function') {

            keys.push(key);
        }
    }
    return keys;
}

dies ist Teil meiner Implementierung der HashMap und ich will nur die Schlüssel, "this" ist das HashMap-Objekt, das die Schlüssel enthält

9voto

samet Punkte 508

Verwenden Sie Reflect.ownKeys()

var obj = {a: 1, b: 2, c: 3};
Reflect.ownKeys(obj) // ["a", "b", "c"]

Objekt.Schlüssel y Object.getOwnPropertyNames kann nicht bekommen nicht abzählbar Eigenschaften. Es funktioniert sogar für nicht abzählbar Eigenschaften.

var obj = {a: 1, b: 2, c: 3};
obj[Symbol()] = 4;
Reflect.ownKeys(obj) // ["a", "b", "c", Symbol()]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X