Desafio JavaScript

Iterando com Object.entries

Enunciado

Dado o objeto estoque com produtos e quantidades, use Object.entries para percorrer e imprimir cada produto e sua quantidade no formato Produto: quantidade. Depois, use Object.keys para imprimir a lista de produtos.

Requisitos

  • Use Object.entries para iterar e imprimir cada par no formato chave: valor.
  • Use Object.keys para obter e imprimir um array com os nomes dos produtos.
  • A saída deve listar todos os produtos e quantidades.

Código inicial

const estoque = {
  caneta: 10,
  caderno: 5,
  borracha: 8
};

// Use Object.entries para imprimir cada produto e quantidade

// Use Object.keys para imprimir os nomes dos produtos

Saída esperada

caneta: 10
caderno: 5
borracha: 8
[ 'caneta', 'caderno', 'borracha' ]
Ver dica

Use for (const [chave, valor] of Object.entries(estoque)) e console.log(Object.keys(estoque)).

Mostrar solução
const estoque = {
  caneta: 10,
  caderno: 5,
  borracha: 8
};

// Object.entries retorna um array de pares [chave, valor]
for (const [produto, quantidade] of Object.entries(estoque)) {
  console.log(`${produto}: ${quantidade}`);
}

// Object.keys retorna um array apenas com as chaves
console.log(Object.keys(estoque));

Passo a passo

  1. Declaramos estoque com três produtos e suas quantidades.
  2. Object.entries(estoque) cria um array como [['caneta', 10], ['caderno', 5], ['borracha', 8]].
  3. O for...of percorre cada par, e a desestruturação [produto, quantidade] separa chave e valor.
  4. Dentro do loop, console.log imprime no formato produto: quantidade.
  5. Fora do loop, Object.keys(estoque) retorna ['caneta', 'caderno', 'borracha'], que é impresso como array.

Por que funciona

Object.entries e Object.keys são métodos estáticos que extraem informações de um objeto. entries facilita a iteração sobre pares chave-valor, enquanto keys é útil quando só precisamos das chaves. Ambos respeitam a ordem de inserção das propriedades.

Erros comuns

  • Tentar usar for...of diretamente no objeto: for (const item of estoque) gera erro, pois objetos não são iteráveis por padrão.
  • Esquecer de desestruturar: for (const par of Object.entries(estoque)) { console.log(par[0] + ': ' + par[1]); } funciona, mas é menos legível.
  • Usar Object.entries em um valor null ou undefined causa erro; certifique-se de que o objeto existe.

Outra forma de resolver

Poderia usar Object.values para obter apenas os valores, ou um for...in para percorrer chaves:

for (const produto in estoque) {
  console.log(`${produto}: ${estoque[produto]}`);
}
console.log(Object.keys(estoque));

for...in também itera sobre propriedades herdadas, então Object.entries é mais seguro para objetos simples.

Saída esperada

caneta: 10
caderno: 5
borracha: 8
[ 'caneta', 'caderno', 'borracha' ]