Utilizando métodos Map e forEach para gerenciar estoques
Imagina que você tenha um estoque de produtos variados, cada um com um identificador (como o código de cadastro no sistema), nome, preço e categoria. Suponha que queremos aplicar descontos específicos para cada categoria de produto. Podemos utilizar o método map, que percorre um array de objetos e gera um novo array baseado nos dados processados.
Para este exemplo, considere que a empresa trabalha somente com três categorias: Eletrônicos, Roupas e Eletrodomésticos. A lógica de desconto será a seguinte:
Eletrônicos: 10% de desconto,
Roupas: 20% de desconto,
Eletrodomésticos: 15% de desconto.
1º Criaremos nosso array de objetos
const produtos = [
{ id: 1, nome: 'Notebook', preco: 3000, categoria: 'Eletrônicos' },
{ id: 2, nome: 'Camiseta', preco: 50, categoria: 'Roupas' },
{ id: 3, nome: 'Fritadeira', preco: 400, categoria: 'Eletrodomésticos' },
{ id: 4, nome: 'Calça', preco: 150, categoria: 'Roupas' },
{ id: 5, nome: 'Smartphone', preco: 2000, categoria: 'Eletrônicos' }
];
2º Criaremos uma constante chamada produtos desconto que irá receber toda a lógica de desconto.
const produtosComDesconto = produtos.map((produto) => {
let precoComDesconto;
// Aplicar desconto com base na categoria
if (produto.categoria === 'Eletrônicos') {
precoComDesconto = produto.preco - (produto.preco * 0.10);
} else if (produto.categoria === 'Roupas') {
precoComDesconto = produto.preco - (produto.preco * 0.20);
} else {
precoComDesconto = produto.preco - (produto.preco * 0.15);
}
// Retornar o novo objeto com os detalhes do produto
return {
id: produto.id,
nome: produto.nome,
categoria: produto.categoria,
precoOriginal: produto.preco,
precoComDesconto: precoComDesconto.toFixed(2) };
});
3º Imprimindo o resultado
produtosComDesconto.forEach(produto => {
console.log(`Produto: ${produto.nome} - Categoria: ${produto.categoria} - Preço Original: R$ ${produto.precoOriginal} - Preço com Desconto: R$ ${produto.precoComDesconto}`);
});
Resumo
Neste exemplo, usamos o map para aplicar os descontos sem alterar o array original, criando um novo array com as informações dos produtos e seus preços com desconto. *OBS: Usei no else externo o desconto de 15%, pois a empresa está limitada apenas a essas três categorias, logo se o produto não pertence a categoria de roupas ou eletrônicos, não tem outra categoria a não ser eletrodomésticos.
E por último utilizei o forEach, para exibir os resultados de forma detalhada, mostrando o nome do produto, a categoria, o preço original e o preço após o desconto.