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

Praticando Arrays

Fala turma, beleza?

Estava aqui praticando os conhecimentos adquiridos durante o curso e cheguei no seguinte exemplo:

Quero imprimir os carros e quantidades vendidas numa determinada cor. Logo após quero imprimir também a soma destas quantidades. Pra isso criei o seguinte código:

let carros = ['Gol', 'Marea', 'Corolla', 'Civic', 'HB20']
let quantidadesVendidas = [58, 10, 5, 2, 254]
let corVendida = ['azul', 'prata', 'preto', 'preto', 'cinza']

const carrosVendidos = carros.filter((_, i) => corVendida[i] === 'preto')
const qtVend = quantidadesVendidas.filter((_, i) => corVendida[i] === 'preto').reduce((ac, at) => at + ac, 0)


console.log(`Os carros vendidos na cor preta são: ${carrosVendidos}, somando um total de ${qtVend} unidades.`)

Como podem ver, com este código não consegui apenas imprimir o valor do array quantidadesVendidas ao lado de cada carro. Como eu poderia fazer isso? Se houverem sugestões pra refatorar este código também são bem vindas, obrigado!

2 respostas
solução!

Um codigo a grosso modo para o que voce precisa.

Sempre precisamos entender o que determinado funcao esta retornando. Conforme realizei comentarios.

<script>
let carros = ['Gol', 'Marea', 'Corolla', 'Civic', 'HB20']
let quantidadesVendidas = [58, 10, 5, 2, 254]
let corVendida = ['azul', 'prata', 'preta', 'preta', 'cinza']

const corFiltro = 'preta' //-- REPETIU MUITO NO CODIGO PODE VIRAR VARIAVEL

const carrosVendidos = carros.filter((_, i) => corVendida[i] === corFiltro)
const totalVendido = quantidadesVendidas.filter((_, i) => corVendida[i] === corFiltro).reduce((ac, at) => at + ac, 0)
const vendasPorModelo = quantidadesVendidas.filter((_, i) => corVendida[i] === corFiltro) //--- RETORNA [5, 2]


//--- COMO TEMOS 2 OBJETOS (ARRAY) Distintos, temos que imprimir no mesmo indice.
for (i = 0; i < Object.keys(carrosVendidos).length; i++) {    
    console.log('Modelo: ' + carrosVendidos[i] + ' Quantidade: ' +  vendasPorModelo[i]); //-- AQUI VOCE PODERIA ADICIONAR EM UM ARRAY STRING.. E IMPRIMIR TUDO NO SEU CONSOLE LOG
}

console.log('###### RESUMO ########')
console.log(`Os carros vendidos na cor ${corFiltro} são: ${carrosVendidos}, somando um total de ${totalVendido} unidades.`)

</script>

Para uma solucao melhor e conseguir imprimir conforme seu console.log. Teria que ser feito uma tratativa para agrupar os Objetos (carrosVendidos[Array1], vendasPorModelo[Array2]).

Opa Guilherme, show cara! Muito obrigado pelas dicas, funcionou quase do jeito que imaginei. Obrigadão mesmo!