TypeScript,遍历字典

2020/10/18 10:21 · javascript ·  · 0评论

在我的代码中,我有几个字典(按此处的建议)是用String索引的。由于这是一种临时类型,我想知道是否有关于如何循环遍历每个键(或值,无论如何我都需要的键)的建议。任何帮助表示赞赏!

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

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

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

<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)) {
    ...
}

Ian提到的键/值循环有一个警告。如果对象可能具有附加到其原型的属性,则当您使用in运算符时,将包括这些属性。因此,您将需要确保键是实例的属性,而不是原型的属性。较旧的IE以indexof(v)显示为密钥而闻名

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

获取所有字典/对象值的最短方法:

Object.keys(dict).map(k => dict[k]);

Ians Answer是好的,但是您应该使用const而不是let作为密钥,因为它永远不会更新。

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

要获取密钥:

function GetDictionaryKeysAsArray(dict: {[key: string]: string;}): string[] {
  let result: string[] = [];
  Object.keys(dict).map((key) =>
    result.push(key),
  );
  return result;
}

如果您仅针对in一个没有if语句的对象,hasOwnProperty那么您将从linter中得到错误,例如:

for (const key in myobj) {
   console.log(key);
}
WARNING in component.ts
for (... in ...) statements must be filtered with an if statement

因此,解决方案是使用Object.keysof代替。

for (const key of Object.keys(myobj)) {
   console.log(key);
}

希望这个帮手有一个短绒猫。

本文地址:http://javascript.askforanswer.com/typescriptbianlizidian.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!