在我的代码中,我有一对字符串索引的字典(这里建议)。由于这是一个即兴的类型,我想知道是否有任何建议,我将如何能够循环通过每个键(或值,所有我需要的键无论如何)。感谢任何帮助!

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

当前回答

Ian提到的键/值循环有一个警告。如果对象可能有附加到其原型的属性,并且当您使用in操作符时,这些属性将被包括在内。因此,您需要确保键是实例的属性,而不是原型的属性。老的ie以indexof(v)显示为键而闻名。

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

其他回答

要遍历键/值,使用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)
);

要得到钥匙:

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

有了es2019,这现在更简单了:

我们可以使用系统化 不再需要用Object.entries包装字典

例子:

let someMap: Map<number, number> = new Map()
someMap.set(3, 7);
someMap.set(4, 12);
for (let [key, value] of someMap) {
    console.log(key, value)
}

输出:

3 7
4 12

如果你只想通过对象值进行循环,请查看object .values