javascript - for - typescript iterate map
TypeScript, Looping a través de un diccionario (4)
¿Qué tal esto?
for (let [key, value] of Object.entries(obj)) {
...
}
En mi código, tengo un par de diccionarios (como se sugiere here ) que están indexados por cadenas. Debido a que este es un tipo un poco improvisado, me preguntaba si hay alguna sugerencia sobre cómo podría recorrer cada clave (o valor, de todas maneras necesito las claves). Cualquier ayuda apreciada!
myDictionary: { [index: string]: any; } = {};
@Alcesem tenía casi razón, excepto que el beneficio de ese método es que no es necesario incluir el hasOwnProperty()
con Object.keys
porque el iterador no buscará más allá de la cadena del prototipo. Por lo tanto, lo que sigue no solo es seguro para diccionarios, sino también para cualquier tipo de objeto tanto en Typescript como en Javascript.
<ES 2017 :
Object.keys(obj).forEach(key => {
let value = obj[key];
});
> = ES 2017 :
Object.entries(obj).forEach(
([key, value]) => console.log(key, value)
);
Hay una advertencia al ciclo clave / valor que Ian mencionó. Si es posible que los Objetos puedan tener atributos adjuntos a su Prototipo, y cuando use el operador in
, estos atributos serán incluidos. Por lo tanto, querrá asegurarse de que la clave sea un atributo de su instancia y no del prototipo. Los IEs más antiguos son conocidos por tener el indexof(v)
como clave.
for (const key in myDictionary) {
if (myDictionary.hasOwnProperty(key)) {
let value = myDictionary[key];
}
}
Para recorrer las claves / valores, use un ciclo for in
:
for (let key in myDictionary) {
let value = myDictionary[key];
// Use `key` and `value`
}