0
votes

Comment calculer des objets d'un tableau - JavaScript

Bonjour J'ai ces objets dans un tableau et je veux obtenir le total des prix après plusieurs prix après avoir multiplié chaque prix avec sa quantité.

const raw = [{a: 1}, {a: 2}, {a: 3}, {b: 4}, {b: 5}];

const calcSums = someArray => someArray
  .reduce( (sums, val) => {
    Object.keys(val)
      .forEach( v => 
          sums[`sum-${v}`] = !sums[`sum-${v}`] ? val[v] : sums[`sum-${v}`] + val[v] );
    return sums;
  }, {} );


console.log(calcSums(raw));

// the method is generic, so this works too (as long as the values are numbers)
const raw2 = [{a: 1, b:3, c:7}, {a: 2}, {a: 3}, {b: 4}, {b: 5}, {c: 9}];
console.log(calcSums(raw2));


0 commentaires

5 Réponses :


1
votes

Vous pouvez utiliser la carte et réduire:

  • La carte applique une fonction à tous les éléments du tableau, dans ce cas la multiplication li>
  • Réduire (avec la fonction que j'utilise) résume tous les éléments du tableau. LI> ul>

    p>

    let prods = [
     {
      productId:55,
      productName:"Libero",
      productImage:"https://www.albadrbakelser.se/en/wp-content/uploads/sites/2/2019/08/albadr-logo-background.jpg",
      productQuantity:7,
      productPrice:100
     },
     {
      productId:56,
      productName:"Nam Libero Tempore",
      productImage:"https://www.albadrbakelser.se/en/wp-content/uploads/sites/2/woocommerce-placeholder.png",
      productQuantity:8,
      productPrice:150
     }
    ]
    
    var total = prods.map(x=>x.productQuantity*x.productPrice).reduce((a,b)=>a+b)
    
    console.log(total)


0 commentaires

1
votes

Vous pouvez utiliser array.reduce code> pour agréger les données d'un tableau d'objets:

p>

let input = [
 {
  productId:55,
  productName:"Libero",
  productImage:"https://www.albadrbakelser.se/en/wp-content/uploads/sites/2/2019/08/albadr-logo-background.jpg",
  productQuantity:7,
  productPrice:100
 },
 {
  productId:56,
  productName:"Nam Libero Tempore",
  productImage:"https://www.albadrbakelser.se/en/wp-content/uploads/sites/2/woocommerce-placeholder.png",
  productQuantity:8,
  productPrice:150
 } 
]

let result = input.reduce((acc,cur) => acc + cur.productQuantity * cur.productPrice, 0);

console.log(result);


0 commentaires

1
votes
let totalPrice = someArr.reduce((total, item) => {
  total + (item.productQuantity * item.productPrice)
}, 0);

1 commentaires

Bien que ce code puisse résoudre le problème de l'OP, il est préférable d'inclure une explication sur la manière dont votre code répond à la question de l'OP. De cette manière, les futurs visiteurs peuvent apprendre de votre message et l'appliquer à leur propre code. Donc, ce n'est pas un service de codage, mais une ressource pour la connaissance. De plus, de haute qualité, des réponses complètes sont plus susceptibles d'être évitées. Ces caractéristiques, ainsi que l'exigence selon laquelle tous les postes sont autonomes, sont certaines des forces de manière à ce que la plate-forme, qui la différencie des forums. Vous pouvez modifier pour ajouter des informations supplémentaires et / ou pour compléter vos explications avec la documentation de la source.



2
votes

Si je comprends bien correctement, vous essayez d'obtenir un seul numéro à la fin avec la valeur totale de tous vos stocks. Essayez ceci: xxx


1 commentaires

Merci mais je ne savais vraiment pas comment obtenir la productivité et le producteur en même temps quand je les boucle



0
votes

J'espère que cela aide

p>

var total = 0;
for(let obj of arr){
  obj.mult = obj.productQuantity * obj.productPrice;
}
for(let obj of arr){
  total += obj.mult;
}
console.log(total);


0 commentaires