TypeScript,通过字典循环

在我的代码中,我有几个字典( 这里build议),这是string索引。 由于这是一个即兴types的一点,我想知道是否有任何build议,我将能够循环通过每个键(或价值,所有我需要的键无论如何)。 任何帮助感激!

myDictionary: { [index: string]: any; } = {}; 

要遍历键/值,请使用for in循环:

 for (let key in myDictionary) { let value = myDictionary[key]; // Use `key` and `value` } 

Ian提到的关键/价值循环有一个警告。 如果对象可能具有附属于其原型的属性,并且在使用in运算符时,这些属性将被包括在内。 所以你要确保关键是你的实例的属性,而不是原型。 早期的IE以indexof(v)显示为关键字而闻名。

 for (var key in myDictionary) { if (myDictionary.hasOwnProperty(key)) { var value = myDictionary[key]; } } 

@Alcesem几乎是正确的,除了该方法的好处是不需要在Object.keys包含hasOwnProperty()守护Object.keys因为迭代器不会进一步search原型链。 因此,以下内容不仅对于字典是安全的,而且对于TypeScript和Javascript中的任何types的对象都是安全的。

<ES 2017

 Object.keys(obj).forEach(key => { let value = obj[key]; }); 

> = ES 2017

 Object.entries(obj).forEach( ([key, value]) => console.log(key, value) ); 

这个怎么样?

 for (let [key, value] of Object.entries(obj)) { ... } 

我也会用一种方法来捕获分配给variables'key'的值:

 Object.keys(myDictionary).forEach(key => { if (myDictionary.hasOwnProperty(key)) { var value = myDictionary[key]; } });