在我的代碼中,我有幾個詞典(建議here),它是String索引的。由於這是一種即興類型,我想知道是否有任何關於如何能夠遍歷每個鍵(或值,我需要鍵的所有內容)的建議。任何幫助感謝!TypeScript,在字典中循環
myDictionary: { [index: string]: any; } = {};
在我的代碼中,我有幾個詞典(建議here),它是String索引的。由於這是一種即興類型,我想知道是否有任何關於如何能夠遍歷每個鍵(或值,我需要鍵的所有內容)的建議。任何幫助感謝!TypeScript,在字典中循環
myDictionary: { [index: string]: any; } = {};
有一個警告給密鑰/值循環伊恩提及。如果對象可能具有附加到其原型的屬性,並且使用運算符in
時,將包含這些屬性。因此,您需要確保密鑰是實例的屬性,而不是原型的屬性。以舊版IEs爲indexof(v)
顯示爲關鍵。
for (var key in myDictionary) {
if (myDictionary.hasOwnProperty(key)) {
var value = myDictionary[key];
}
}
不要試圖分割頭髮,但因爲我們正在談論類型腳本,不應該使用let key而不是var key嗎?很好的答案,謝謝。 – 2016-03-11 01:03:01
事實上,在當前版本的腳本中,'key'和'value'可以是'const'。 – 2017-03-03 05:19:19
@Alcesem有它差不多吧,只是這種方法的好處是,一個並不需要包括hasOwnProperty()
後衛Object.keys
因爲迭代器不會再進一步向上搜索原型鏈。因此,以下內容不僅對字典安全,而且對於Typescript和Javascript中的任何類型的對象都是安全的。
< 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)) {
...
}
你試過了:for(var key in myDictionary){}'?在循環內部,你可以使用'key'來獲取密鑰,'myDictionary [key]'獲得值 – Ian 2013-04-23 16:15:19
@Ian剛剛嘗試過,似乎沒有工作。沒有錯誤,但沒有在聲明中運行 – ben657 2013-04-23 16:21:33
@Ian啊對不起,其他代碼中的一些代碼搞亂了它。這很好用!小心讓它成爲答案,以便我可以選擇它? – ben657 2013-04-23 16:38:52