203 Stimmen

Wie kann ich die Schlüssel eines Objekts finden?

Ich kenne mich mit JavaScript aus, Objekte double als Hashes, aber ich habe keine eingebaute Funktion finden können, um die Schlüssel zu erhalten:

var h = {a:'b', c:'d'};

Ich möchte etwas wie

var k = h.keys() ; // k = ['a', 'c'];

Es ist einfach, eine Funktion selbst zu schreiben, um über die Elemente zu iterieren und fügen Sie die Schlüssel zu einem Array, das ich zurückgeben, aber gibt es eine Standard sauberer Weg, das zu tun?

Ich habe das Gefühl, dass es eine einfache eingebaute Funktion sein muss, die ich übersehen habe, aber ich kann sie nicht finden!

8voto

chim Punkte 7997

Verwendung von jQuery können Sie die Schlüssel wie folgt erhalten:

var bobject =  {primary:"red", bg:"maroon", hilite:"green"};
var keys = [];
$.each(bobject, function(key, val){ keys.push(key); });
console.log(keys); // ["primary", "bg", "hilite"]

Oder:

var bobject =  {primary:"red", bg:"maroon", hilite:"green"};
$.map(bobject, function(v, k){return k;});

Dank an @pimlottc.

6voto

palmsey Punkte 5754

Ich glaube, Sie können Schleife durch die Eigenschaften des Objekts mit for/in, so dass Sie so etwas wie diese tun könnte:

function getKeys(h) {
  Array keys = new Array();
  for (var key in h)
    keys.push(key);
  return keys;
}

4voto

Matthew Darwin Punkte 161

Ich wollte die AnnanFay's Antwort :

Object.prototype.keys = function () ...

Wenn es jedoch in Verbindung mit dem Google Maps API v3, Google Maps ist nicht funktionsfähig.

Allerdings,

for (var key in h) ...

funktioniert gut.

1voto

zeacuss Punkte 2503

Wenn Sie nur die Elemente, aber nicht 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 möchte nur die Schlüssel. this ist das Hashmap-Objekt, das die Schlüssel enthält.

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