0
votes

Comment résumer les valeurs en fonction de la case à cocher

J'essaie d'ajouter les chiffres ensemble en tant que valeur résumée selon laquelle l'élément est vérifié pour afficher comme total sur ma page de commande.

J'ai essayé p> xxx pré>

Évidemment, pas la déclaration complète, mais cela ne fonctionnait même pas aussi loin. P>

J'ai un éventail d'objets contenant cette p> xxx pré>

et quand je vérifie Ma boîte Il tourne le lien vers! Produits [0] .selected P>

Mon dernier essai était avec une déclaration de commutation, j'ai peut-être totalement boucher, car il s'agit de ma première instruction de commutation sur le terrain: P

  priceSummary() {
    switch (
      (this.products[0].selected,
      this.products[1].selected,
      this.products[2].selected)
    ) {
      case (true, false, false):
        this.summary = this.products[0].price
        break
      case (true, true, false):
        this.summary = this.products[0].price + this.products[1].price
        break
      case (true, false, true):
        this.summary = this.products[0].price + this.products[2].price
        break
      case (false, false, true):
        this.summary = this.products[2].price
        break
      case (false, true, false):
        this.summary = this.products[1].price
        break
      case (false, false, false):
        this.summary = 0
        break
      case (true, true, true):
        this.summary =
          this.products[0].price +
          this.products[1].price +
          this.products[2].price
      default:
        this.summary = 0
    }


1 commentaires

L'inconvénient de ne pas utiliser de boucle est que vous devez modifier l'IF / SLOP ou le commutateur pour chaque produit que vous ajoutez. Vous pouvez voir comment cela ne sera pas faisable lorsque vous avez un magasin avec des milliers de produits différents. Le calcul du prix total ne doit pas dépendre du nombre d'articles que vous achetez.


3 Réponses :


1
votes

Peuts comme celui-là: xxx

?


2 commentaires

Merci à l'homme, celui-ci fait le travail, j'ai aussi laissé de côté === True (Prod.Selected) suffit. Et a également ajouté ceci.summary = 0, de sorte qu'il ne continue pas d'ajouter au résumé même s'il est coché et sur plusieurs fois :)


Vous êtes le bienvenu, heureux de voir que vous n'avez aucun problème d'ajustement :)



0
votes

Si vous utilisez des méthodes de tableau, chaque étape peut être vraiment facile et lisible. En dehors de quelques cas de bord, une instruction de commutation ne doit pas remplacer une boucle.

p>

const model = {
  data: {
    summary: 0,
    products: [
      { name: 'Hemsida', price: 290, selected: true },
      { name: 'Copywriting', price: 190, selected: true },
      { name: 'Fotografering', price: 190, selected: false }
    ]
  }
};
// Create an array of only selected products.
const selected_products = model.data.products.filter( product => product.selected );
// Sum the prices of the selected products.
const price = selected_products.reduce(( sum, product ) => sum + product.price, 0 );

model.data.summary = price;

console.log( model.data.summary );


1 commentaires

Je vais essayer celui-ci aussi, THX pour l'entrée. Je commence juste en tant que programmeur et faire des erreurs de recrue tous les jours.



0
votes

Le meilleur moyen est que @nil dit ci-dessus. Mais si vous voulez une version "non itérable" sans boucle, vous pouvez le faire comme ceci:

priceSummary() {
    this.summary = 0

    if(this.products[0].selected) {
        this.summary += this.products[0].price // same as this.summary = this.summary + this.products[0].price
    }

    if(this.products[1].selected) {
        this.summary += this.products[1].price
    }

    if(this.products[2].selected) {
        this.summary += this.products[2].price
    }
}


2 commentaires

Merci, j'ai inclus ceci.summary = 0 dans le début de la version Nils et ça marche comme un rêve. Ainsi, votre version, mais NILS Way était plus propre: D


Alors, fusionnez-les à la fois: avant this.product.froduct.foreach mettre this.summary = 0 :)