Dans mon code, j'ai deux dictionnaires (comme suggéré ici ) qui est indexé par chaîne. En raison de son caractère quelque peu improvisé, je me demandais si je pouvais faire une boucle pour parcourir chaque clé (ou valeur, tout ce dont j'avais besoin pour les clés). Toute aide appréciée!
myDictionary: { [index: string]: any; } = {};
Pour boucler sur la clé/les valeurs, utilisez une boucle for in
:
for (let key in myDictionary) {
let value = myDictionary[key];
// Use `key` and `value`
}
@Alcesem avait presque raison, sauf que l'avantage de cette méthode est qu'il n'est pas nécessaire d'inclure la hasOwnProperty()
garde avec Object.keys
, car l'itérateur ne cherchera pas plus loin dans la chaîne de prototypes. Ainsi, ce qui suit n’est pas seulement sûr pour les dictionnaires, mais pour tout type d’objet en TypeScript et Javascript.
<ES 2017:
Object.keys(obj).forEach(key => {
let value = obj[key];
});
> = ES 2017:
Object.entries(obj).forEach(
([key, value]) => console.log(key, value)
);
Ian a mentionné une mise en garde à propos de la boucle clé/valeur. S'il est possible que des attributs soient associés aux objets d'un objet et que vous utilisiez l'opérateur in
, ces attributs seront inclus. Vous voudrez donc vous assurer que la clé est un attribut de votre instance et non du prototype. Les anciens IE sont connus pour avoir indexof(v)
affiché comme une clé.
for (const key in myDictionary) {
if (myDictionary.hasOwnProperty(key)) {
let value = myDictionary[key];
}
}
Que dis-tu de ça?
for (let [key, value] of Object.entries(obj)) {
...
}
Le moyen le plus rapide d'obtenir toutes les valeurs dictionnaire/objet:
Object.keys(dict).map(k => dict[k]);