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 ...stuffing
ré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
function
déclaration à la place (ou utiliser également es6class
syntactic-sugar). Jetez un œil à cette réponse pour comprendre pourquoi (dans votre cas, au lieu d'obtenir l'Hamburger
objet, vous obtenez l'window
objet global ). - Ne pas utiliser
humb1
sur l'implémentation decalculatePrice
laquelle est une fonction qui fait partie du prototype de classe alors quehumb1
est une instance de classe. stuffing
est un tableau. Vous devez travailler sur chaque élément pour obtenir le coût total. J'ai utiliséreduce
ici.
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());