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.entriespara iterar e imprimir cada par no formatochave: valor. - Use
Object.keyspara 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
- Declaramos
estoquecom três produtos e suas quantidades. Object.entries(estoque)cria um array como[['caneta', 10], ['caderno', 5], ['borracha', 8]].- O
for...ofpercorre cada par, e a desestruturação[produto, quantidade]separa chave e valor. - Dentro do loop,
console.logimprime no formatoproduto: quantidade. - 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...ofdiretamente 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.entriesem um valornullouundefinedcausa 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' ]