No meu código, tenho alguns dicionários (como sugerido aqui ), que são indexados por String. Por ser um tipo improvisado, fiquei imaginando se havia alguma sugestão sobre como seria capaz de percorrer cada chave (ou valor, tudo o que preciso para as chaves). Qualquer ajuda apreciada!
myDictionary: { [index: string]: any; } = {};
javascript
html
typescript
ben657
fonte
fonte
for (var key in myDictionary) { }
:? Dentro do loop, você pode usarkey
para obter a chave, emyDictionary[key]
para obter o valorRespostas:
Para fazer um loop sobre a chave / valores, use um
for in
loop:fonte
Object.keys(target).forEach(key => { let value = target(key); /* Use key, value here */ });
. Se você precisar mostrar esse método, mencione pelo menos os riscos e as melhores alternativas para quem ainda não conhece.<ES 2017 :
> = ES 2017 :
fonte
Object.entries
o trabalho à máquinaQue tal agora?
fonte
key
em tudo, simplesmente deixe em branco:[ , value]
. (Graças a este comentário da questão .)Há uma ressalva no loop de chave / valor que Ian mencionou. Se for possível que os Objetos possuam atributos anexados ao seu Protótipo, e quando você usar o
in
operador, esses atributos serão incluídos. Portanto, você deve garantir que a chave seja um atributo da sua instância, e não do protótipo. IEs mais antigos são conhecidos porindexof(v)
aparecerem como uma chave.fonte
key
evalue
pode serconst
.hasOwnProperty
verificação do objeto de destino, faça o seguinte:...if (Object.prototype.hasOwnProperty.call(myDictionary, key))...
Caso contrário , se você estiver usando eslint comno-prototype-builtins
regra, ele emitirá um erro.Maneira mais curta de obter todos os valores de dicionário / objeto:
fonte
Para obter as chaves:
fonte
Resposta é boa, mas você deve usar const em vez de deixar a chave, porque ela nunca é atualizada.
fonte