Average items with different criteria

0

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.

    
asked by anonymous 30.07.2018 / 16:55

0 answers