私のコードでは、(hereとして示唆されている)いくつかの辞書がインデックスされています。これは即興型のビットなので、どのように各キー(または値、私はとにかくキーが必要)をループすることができるかについての提案があるかどうか疑問に思っていました。どんな助けにも感謝!TypeScript、辞書をループする
myDictionary: { [index: string]: any; } = {};
私のコードでは、(hereとして示唆されている)いくつかの辞書がインデックスされています。これは即興型のビットなので、どのように各キー(または値、私はとにかくキーが必要)をループすることができるかについての提案があるかどうか疑問に思っていました。どんな助けにも感謝!TypeScript、辞書をループする
myDictionary: { [index: string]: any; } = {};
は、キー/値をループする際、for in
ループを使用します。イアンが言及したことを、キー/値のループに1つの警告があり
for (let key in myDictionary) {
let value = myDictionary[key];
// Use `key` and `value`
}
。 ObjectがPrototypeにアタッチされた属性を持つ可能性があり、in
演算子を使用すると、これらの属性が含まれます。したがって、キーがプロトタイプではなくインスタンスの属性であることを確認する必要があります。以前のIEは、indexof(v)
をキーとして表示することで知られています。
for (var key in myDictionary) {
if (myDictionary.hasOwnProperty(key)) {
var value = myDictionary[key];
}
}
髪を分割しようとしていませんが、タイプスクリプトを話しているので、varキーの代わりにletキーを使うべきではありませんか?ニースの答えはありがとう。 –
実際、現在のバージョンのスクリプトでは、 'key'と' value'は 'const'です。 –
@Alcesemは、ほぼ右その方法の利点は、イテレータがプロトタイプチェーンまで、さらに検索しませんので、1がObject.keys
でhasOwnProperty()
ガードを含める必要がないことであることを除いて、それを持っていました。したがって、以下は辞書に対して安全であるだけでなく、TypescriptとJavascriptの両方でオブジェクトの種類は安全です。 2017
< ES:
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(myDictionary内のvarキー){}'?ループ内でキーを取得するには 'key'を使用し、値を取得するには' myDictionary [key] 'を使用します – Ian
@Ianちょうどそれを試みましたが、動作していないようです。エラーはありませんが、文内では何も実行されません – ben657
@Ian Ah申し訳ありませんが、他のコードではそれを乱していました。それは完璧に動作します!私はそれを選ぶことができるようにそれを答えにするためのケア? – ben657