Calculer la somme du tableau d'objets par retour de propriété spécifique NaN


Igor Shvets

Le hamburger est complété par un ou plusieurs stuffing(pas moins d'un).
Cependant, lorsque j'utilise le ...stuffingrésultat est undefined.
Aidez-moi à corriger cette tâche, afin qu'elle compte le coût de tous les ingrédients.

function Hamburger(size, ...stuffing) {
  this.size = size;
  this.stuffing = stuffing;
  this.topping = [];
}
Hamburger.small = {
  name: 'small',
  price: 10,
  kcal: 200
}
Hamburger.cheese = {
  name: 'cheese',
  price: 4,
  kcal: 10
}
Hamburger.meet = {
  name: 'meet',
  price: 40,
  kcal: 103
}
Hamburger.prototype.calculatePrice = () => {
  let allCost = humb1.size.price + humb1.stuffing.price;
  return `Total burger price: ${allCost}`
}

let humb1 = new Hamburger(Hamburger.small, Hamburger.cheese, Hamburger.meet);
console.log(humb1.calculatePrice());

Maor Refaeli
  • Vous ne pouvez pas utiliser la fonction de flèche comme vous l'avez utilisée, vous devez utiliser la bonne vieille functiondéclaration à la place (ou utiliser également es6 classsyntactic-sugar). Jetez un œil à cette réponse pour comprendre pourquoi (dans votre cas, au lieu d'obtenir l' Hamburgerobjet, vous obtenez l' windowobjet global ).
  • Ne pas utiliser humb1sur l'implémentation de calculatePricelaquelle est une fonction qui fait partie du prototype de classe alors que humb1est une instance de classe.
  • stuffingest un tableau. Vous devez travailler sur chaque élément pour obtenir le coût total. J'ai utilisé reduceici.

function Hamburger(size, ...stuffing) {
  this.size = size;
  this.stuffing = stuffing;
  this.topping = [];
}
Hamburger.small = {
  name: 'small',
  price: 10,
  kcal: 200
}
Hamburger.cheese = {
  name: 'cheese',
  price: 4,
  kcal: 10
}
Hamburger.meet = {
  name: 'meet',
  price: 40,
  kcal: 103
}
Hamburger.prototype.calculatePrice = function() {
  let totalCost = this.size.price + this.stuffing.reduce((a, c) => a + c.price, 0);
  return `Total burger price: ${totalCost}`;
}

let humb1 = new Hamburger(Hamburger.small, Hamburger.cheese, Hamburger.meet);
console.log(humb1.calculatePrice());

Articles connexes


Calculer la somme du champ du tableau d'objets

La franchise Travailler sur une application Node avec Express comme framework Web et Mongo comme backend. Actuellement, j'ai un schéma de données Mongoose avec les joueurs et les statistiques associées. Voici un exemple anonymisé de la structure : name: 'Pla