Olá pessoal,
Venho compartilhar com vocês algo que quebrou um pouco a cabeça, mas no final ficou legal, implementação abaixo de uma função para recalcular a quantidade e valor do produto caso ele já esteja na lista do carrinho, segue exemplo da implementação e código abaixo
function adicionarCarrinho(qtd,nome,val) {
//V1.3 Adicionado recalculo de quantidade e valor do produto caso ele ja esteja na lista do carrinho
if (listaCarrinho.some(item => item.includes(nome))) {
let posicaoArray = listaCarrinho.findIndex(item => item.includes(nome));
let posicaoNomeQuantidade = listaCarrinho[posicaoArray].indexOf(`x</span> ${nome}`);
let quantidadeProdutoAnterior = parseInt(listaCarrinho[posicaoArray].slice(posicaoNomeQuantidade-3,posicaoNomeQuantidade).match(/\d+/)[0]);
let posicaoNomeValor = listaCarrinho[posicaoArray].indexOf('R$');
let valorProdutoAnterior = parseInt(listaCarrinho[posicaoArray].slice(posicaoNomeValor,posicaoNomeValor+6).match(/\d+/)[0]);
listaCarrinho[posicaoArray] = `<section class="carrinho__produtos__produto"><span class="texto-azul">${quantidadeProdutoAnterior+qtd}x</span> ${nome} <span class="texto-azul">R$${valorProdutoAnterior+val}</span></section>`
document.getElementById('quantidade').value = '';
document.getElementById('produto').value = '';
let listaCarrinhoFinal = document.getElementById('lista-produtos');
listaCarrinhoFinal.innerHTML = listaCarrinho.join('');
return listaCarrinhoFinal;
} else {
listaCarrinho.push(`<section class="carrinho__produtos__produto"><span class="texto-azul">${qtd}x</span> ${nome} <span class="texto-azul">R$${val}</span></section>`);
document.getElementById('quantidade').value = '';
document.getElementById('produto').value = '';
let listaCarrinhoFinal = document.getElementById('lista-produtos');
listaCarrinhoFinal.innerHTML = listaCarrinho.join('');
return listaCarrinhoFinal;
}
}