Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Console loga apenas 1 item do for loop

Eu tenho o objeto:

choices: {'Frederico' : true, 'Roberto' : false, 'Carlos' : false}

E uso o for in para iterar sobre esses objetos para pegar os valores de cada chave:

for(var k in choices) {
  var myData = choices[k];
}

Porem se eu logar a variavel myData fora do for in loop, ele retorna apenas o valor de 1 item ao inves de retornar os 3 valores.

console.log(myData);
// retorna false, sendo que deveria retornar true, false, false

Como eu faço para usar a variavel myData fora do for in loop? Tem como?

4 respostas

A variável myData armazena somente um valor.

Neste exemplo está armazenando o valor de 'Carlos' que é igual a 'false'.

Se você precisa de uma variável para guardar muitos valores, deve criar um array.

Ou então mude o código para:

var myData;
for(var k in choices) {
     myData += ',' + choices[k];
}
console.log(myData);
solução!

Bruno a resposta esta no seu exemplo: "Porem se eu logar a variavel myData fora do for in loop", como você logar a variável de todos os valores então você deve deixa-la dentro do for, senão ela irá imprimir apenas o ultima valor atribuido a ela dentro do for.

let frutas = ['Maça', 'Banana', 'Manga', 'Morango', 'Uva'];
let fruta = null;
for (var i = 0; i < frutas.length; i++) {
    fruta = frutas[i];
}
console.log(fruta);

Nesse caso vai ser impresso apenas Uva pois foi o ultimo valor dado a nossa variável fruta, para que seja impresso o nome de todas as frutas devemos fazer:

let frutas = ['Maça', 'Banana', 'Manga', 'Morango', 'Uva'];
let fruta = null;
for (var i = 0; i < frutas.length; i++) {
    fruta = frutas[i];
    console.log(fruta);
}

Ou podemos simplesmente logar direto do array:

let frutas = ['Maça', 'Banana', 'Manga', 'Morango', 'Uva'];
for (var i = 0; i < frutas.length; i++) {
    console.log(frutas[i]);
}

Espero ter ajudado.

Obrigado Matheus! Agora faz mais sentido.

De nada Bruno, sempre que precisar não deixe de criar suas dúvidas.