Olá Natã,
Senti a mesma coisa, segue a forma como eu fiz:
controle.forEach((elemento) => {
elemento.addEventListener("click", function(evento) {
manipulaDados(evento.target.dataset.controle, evento.target.parentNode)
atualizaEstatisticas(evento.target.dataset.controle, evento.target.dataset.peca)
})
})
function manipulaDados(operacao, controle) {
const peca = controle.querySelector("[data-contador]")
if (operacao === "+"){
peca.value = parseInt(peca.value) + 1
}
else{
peca.value = parseInt(peca.value) - 1
}
}
function atualizaEstatisticas(operacao, peca){
estatisticas.forEach(function(elemento){
if (operacao === "+"){
elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica]
}
else{
elemento.textContent = parseInt(elemento.textContent) - pecas[peca][elemento.dataset.estatistica]
}
})
}
Vi que na função atualizaEstatisticas o que definiu a operacao foi evento.target.dataset.controle que está dentro da função controle.forEach...
Por isso também coloquei este argumento na função manupulaDados para poder fazer o if nesta função também.
Espero que ajude !