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]; } });