Estoy haciendo este código:

Class Cash
{
    constructor(v, q)
    {
     this.value = v;
     this.quantity = q;
    }

    var money = [];
    money.push( new Cash(50, 4);
    money.push( new Cash(20, 4);
    money.push( new Cash(10, 2);

Necesito hacer esto:

(money[0].value * money[0].quantity) + (money[1].value * money[1].quantity) + (money[n].value * money[n].quantity)

El resultado esperado con las 3 matrices es 300 (50 * 4) + (20 * 4) + (10 * 2)

La idea es que no importa cuántas cosas presione en dinero, continúe haciendo la SumProduct.

Intenté esto, pero no funciona:

for (i = 0; i > money.length; i++)
{
    (money[i].value * money[i].quantity) + (money[i++].value * money[i++].quantity)
}
1
Juan Ardila 8 jun. 2021 a las 23:37

3 respuestas

La mejor respuesta

Simple para loop

var total = 0;
for( var i =0; i< money.length; i++) {
  total += money[i].value * money[i].quantity;
}
console.log(total);

O con reducción

const total = money.reduce(function (total, item) {
  return total + item.value * item.quantity;
}, 0);
console.log(total);
2
epascarello 8 jun. 2021 a las 20:41

Puede usar la función Array.prototype.reduce de la siguiente manera:

class Cash {
  constructor(v, q) {
    this.value = v;
    this.quantity = q;
  }
}

const money = [new Cash(50, 4), new Cash(20, 4), new Cash(10, 2)],
      result = money.reduce((a, m) => a + (m.value * m.quantity), 0);

console.log(result);
1
Ele 8 jun. 2021 a las 20:41

Vea los comentarios a continuación para las correcciones.

class Cash { /* class, not Class */
  constructor(v, q) {
    this.value = v;
    this.quantity = q;
  }
} /* close your class declaration */

const money = [];
money.push(new Cash(50, 4)); /* close your parenthesis */
money.push(new Cash(20, 4)); /* close your parenthesis */
money.push(new Cash(10, 2)); /* close your parenthesis */

let sum = 0; /* initialize a sum variable with value 0 to retain results */
for (m of money) { /* or for (let i = 0; i < money.length; i++)
  /* Assign result of sum/product to something
   * More accurately add it to sum */
  sum += m.value * m.quantity;
}
console.log(sum);
0
Jean-François Fabre 8 jun. 2021 a las 21:04