Dans mon code, j'ai quelques dictionnaires (comme suggéré ici ) qui sont indexés par String. Étant donné que cela était un peu improvisé, je me demandais s'il y avait des suggestions sur la façon dont je pourrais boucler chaque clé (ou valeur, tout ce dont j'ai besoin de toute façon). Toute aide appréciée!
myDictionary: { [index: string]: any; } = {};
javascript
html
typescript
ben657
la source
la source
for (var key in myDictionary) { }
:? À l'intérieur de la boucle, vous utiliseriezkey
pour obtenir la clé etmyDictionary[key]
pour obtenir la valeurRéponses:
Pour boucler sur la clé / les valeurs, utilisez une
for in
boucle:la source
Object.keys(target).forEach(key => { let value = target(key); /* Use key, value here */ });
. Si vous devez montrer cette méthode, mentionnez au moins les risques et les meilleures alternatives pour ceux qui ne savent pas encore mieux.<ES 2017 :
> = ES 2017 :
la source
Object.entries
fonctionner dans TypeScriptQue dis-tu de ça?
la source
key
tout, il suffit de laisser le champ vide:[ , value]
. (Merci à ce commentaire .)Il y a une mise en garde à la boucle clé / valeur mentionnée par Ian. S'il est possible que les objets aient des attributs attachés à leur prototype, et lorsque vous utilisez le
in
opérateur, ces attributs seront inclus. Vous voudrez donc vous assurer que la clé est un attribut de votre instance et non du prototype. Les IE plus anciens sont connus pour s'êtreindexof(v)
présentés comme une clé.la source
key
etvalue
peut êtreconst
.hasOwnProperty
vérification depuis l'objet cible, faites plutôt ceci:...if (Object.prototype.hasOwnProperty.call(myDictionary, key))...
Sinon, si vous utilisez eslint avec uneno-prototype-builtins
règle, il émettra une erreur.Moyen le plus court pour obtenir toutes les valeurs de dictionnaire / objet:
la source
Pour obtenir les clés:
la source
Ians Answer est bon, mais vous devriez utiliser const au lieu de let pour la clé car elle n'est jamais mise à jour.
la source