In meinem Code habe ich ein paar Wörterbücher (wie hier vorgeschlagen ), die String-indiziert sind. Da es sich um einen improvisierten Typ handelt, habe ich mich gefragt, ob es Vorschläge gibt, wie ich die einzelnen Schlüssel (oder Werte, für die ich die Schlüssel sowieso brauche) durchlaufen kann. Jede Hilfe geschätzt!
myDictionary: { [index: string]: any; } = {};
javascript
html
typescript
ben657
quelle
quelle
for (var key in myDictionary) { }
? Innerhalb der Schleife würden Sie verwendenkey
, um den Schlüssel undmyDictionary[key]
den Wert zu erhaltenAntworten:
Verwenden Sie eine
for in
Schleife, um die Schlüssel / Werte zu durchlaufen:quelle
Object.keys(target).forEach(key => { let value = target(key); /* Use key, value here */ });
. Wenn Sie diese Methode zeigen müssen, erwähnen Sie zumindest die Risiken und besseren Alternativen für diejenigen, die es noch nicht besser wissen.<ES 2017 :
> = ES 2017 :
quelle
Object.entries
in TypeScript arbeitetWie wäre es damit?
quelle
key
, lassen Sie es einfach leer :[ , value]
. (Dank dieses Problemkommentars .)Die von Ian erwähnte Schlüssel- / Werteschleife enthält eine Einschränkung. Wenn es möglich ist, dass den Objekten Attribute zugeordnet sind, und wenn Sie den
in
Operator verwenden, werden diese Attribute eingeschlossen. Sie sollten also sicherstellen, dass der Schlüssel ein Attribut Ihrer Instanz und nicht des Prototyps ist. Ältere IEs sind dafür bekannt, dassindexof(v)
sie als Schlüssel auftauchen.quelle
key
undvalue
seinconst
.hasOwnProperty
Prüfung nicht vom Zielobjekt aus aufzurufen , sondern...if (Object.prototype.hasOwnProperty.call(myDictionary, key))...
Folgendes : Wenn Sie eslint mitno-prototype-builtins
Regel verwenden, wird ein Fehler ausgegeben .Kürzester Weg, um alle Wörterbuch- / Objektwerte zu erhalten:
quelle
So erhalten Sie die Schlüssel:
quelle
Ians Antwort ist gut, aber Sie sollten const anstelle von let für den Schlüssel verwenden, da er nie aktualisiert wird.
quelle