I have these functions that sum the item prices of a array
somaTotal() {
let criterioPorIdpv = {};
let criteriosComPrecos = [];
// Parte 1: Monta um criterioPreco para cada criterio.
for (let i in this.varia) {
criteriosComPrecos.push({
tipo: this.varia[i].tpCal,
idPVs: this.varia[i].idPV,
preco: 0.0
});
}
// console.log(criteriosComPrecos);
// Parte 2: Monta uma tabela de idPV para criterioPreco.
for (let i in criteriosComPrecos) {
let criterioPreco = criteriosComPrecos[i];
for (let idPV in criterioPreco.idPVs) {
criterioPorIdpv[criterioPreco.idPVs[idPV]] = criterioPreco;
}
}
// console.log(criterioPorIdpv);
// Parte 3: Acessa cada item da pizza, confere o seu valor e
// o coloca no criterioPreco correspondente.
for (let i in this.selectedVariation) {
let item = this.selectedVariation[i];
let crit = criterioPorIdpv[item.idPV];
// console.log(crit);
if (crit.tipo === "1") {
let v = crit.preco;
if (item.preco > v) crit.preco = item.preco;
}else if (crit.tipo === "2") {
let v = crit.preco;
if (v == 0) {
crit.preco = item.preco;
}else if (item.preco < v) {
crit.preco = item.preco;
}
} else if (crit.tipo === "3") {
crit.preco += parseFloat(item.preco);
}else if (crit.tipo === "4") {
let v = crit.preco;
if (v == 0) {
crit.preco = item.preco;
}else{
// crit.preco = item.preco;
}
} else {
throw new Error("Tipo inválido: " + crit.tipo);
}
}
// Parte 4: Percorre todos os elementos criterioPreco
// para obter o valor final.
let total = 0;
for (let i in criteriosComPrecos) {
total += parseFloat(criteriosComPrecos[i].preco);
}
this.total = total;
return total;
}
The problem is that I am not able to add in the following criteria: When the type equals "4" I want it to take the average of the value of the items of this criterion because there will be several items with different criteria and I have no idea how to do it.