Eu tenho um dicionário que tem o formato de
dictionary = {0: {object}, 1:{object}, 2:{object}}
Como posso percorrer este dicionário fazendo algo como
for((key,value) in dictionary){
//Do stuff where key would be 0 and value would be the object
}
javascript
object
iteration
nbroeking
fonte
fonte
for (let [key, value] of Object.entries(obj))
, preciso de Babel.Respostas:
tl; dr
Map
s.ECMAScript 5:
Não, não é possível com objetos.
Você deve iterar com
for..in
, ouObject.keys
, assimNota: A
if
condição acima é necessária, apenas se você desejar iterar as propriedades que sãodictionary
próprias do objeto. Porquefor..in
irá percorrer todas as propriedades enumeráveis herdadas.Ou
ECMAScript 2015
No ECMAScript 2015, você pode usar
Map
objetos e iterá-losMap.prototype.entries
. Citando um exemplo dessa página,Ou itere com
for..of
, assimResultado
Ou
Resultado
ECMAScript 2017
O ECMAScript 2017 introduziria uma nova função
Object.entries
. Você pode usar isso para iterar o objeto conforme desejado.Resultado
fonte
Object.keys(dictionary).forEach(function(key) {…
muito legível e compatível.Object.entries(object).forEach(([key, val]) => {...});
Tente o seguinte:
fonte
O
Object.entries()
método foi especificado no ES2017 (e é suportado em todos os navegadores modernos ):Explicação:
Object.entries()
leva um objeto como{ a: 1, b: 2, c: 3 }
e transforma-lo em uma matriz de pares chave-valor:[ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
.Com
for ... of
nós podemos fazer um loop sobre as entradas da matriz criada.Como temos a garantia de que cada um dos itens da matriz iterada é ela própria uma matriz de duas entradas, podemos usar a desestruturação para atribuir diretamente variáveis
key
evalue
ao seu primeiro e segundo itens.fonte
Você pode fazer algo assim:
fonte
Tente o seguinte:
fonte
BEM-VINDO A 2020 * Baba no ES6 *
Há algumas respostas bem antigas aqui - aproveite a desestruturação. Na minha opinião, essa é sem dúvida a melhor (muito legível) maneira de iterar um objeto.
fonte
forEach
pelo itemmap
acima, será possível agregar valores.map
retornará uma lista dos referidos valores, simplificando potencialmente o código de outras maneiras.Eu acho que o jeito mais rápido e fácil é
basta verificar a documentação https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
fonte
${key} ${value}
);});usando swagger-ui.js
você consegue fazer isso -
fonte
Você pode usar o script abaixo.
saídas
1 a
2 b
c 3
fonte
Como uma melhoria na resposta aceita, para reduzir o aninhamento, você pode fazer isso, desde que a chave não seja herdada:
Editar: informações sobre
Object.hasOwnProperty
aquifonte