Javascript :: Wie kommen die Schlüssel des assoziativen Arrays array-Variablen?
Wir haben ein assoziatives array wie dieses:
var aArray = {};
aArray.id = 'test';
aArray['x1'] = [1,2,3];
aArray['stackoverflow'] = 'What\'s up?';
aArray['x2'] = [4,5,6];
var keys = [];
for(var key in aArray) {
if (aArray.hasOwnProperty(key)) {
keys.push(key);
}
}
console.log(keys);
Gibt es keine einfache/kurze Art und Weise, wie man Arrays von - Tasten, um die array-variable ohne Schleife?
Wenn dem so ist, außerdem, möglich ist, gelten einige regelmäßige Ausdruck-Schlüssel-Liste zu bekommen nur Schlüssel passen solche Muster (sagen wir mal /^x/
) ohne eine weitere Schleife?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, ECMAScript 5 definiert
- Objekt.keys
, dies zu tun. Die meisten modernen browser-engines haben wird es wohl, die älteren nicht, aber es ist leicht shimmed (zum Beispiel, dieser shim tut).Nein, keine integrierte Funktionalität für die. Geist, es ist eine triviale Funktion zu schreiben:
Array#filter
die man verwenden könnte in Verbindung mitObject.keys
, aber das würde erfordern, dass Funktionsaufrufe zurück in Ihre iterator-Funktion für jede Taste, die würde wahrscheinlich die Niederlage der Zweck.hasOwnProperty
wenn ich ein Objekt erstellen, das von Grund auf neu? Was andere "Tasten" kann pop-up, wenn solche Objekte haben keine internen Variablen und Funktionen? Würde nicht weglassenhasOwnProperty
hilft zur Beschleunigung des Algorithmus?{}
odernew Object
(vorzugsweise ersteres), um das Objekt zu erstellen, und Sie müssen nicht fügen Sie alle aufzählbaren EigenschaftenObject.prototype
(die Sie wahrscheinlich nicht, es ist eine sehr schlechte Idee ist), dann ja, wie eine Optimierung lassen Sie sich diehasOwnProperty
weil alle Eigenschaften derObject.prototype
definiert durch die Spezifikation sind nicht aufzählbar. Wenn du gehst, um dies auf etwas über eine Konstruktor-Funktion, die alle aufzählbaren Eigenschaften über die Prototyp -, dann würden Sie wollen, es zu verlassen in.JavaScript 1.8.5 hat diese Funktionalität gebaut mit Objekt.keys(). Es gibt ein array aller Schlüssel. Könnten Sie ein shim verwenden, die für nicht-unterstützten Browsern (MDN hat die Hilfe auf, die zu).
Als Beispiel siehe diese (jsFiddle)...