Рассчитать сумму массива объектов по заданному свойству return NaN - PullRequest
0 голосов
/ 30 сентября 2018

Гамбургер дополняется одним или несколькими stuffing (не менее одного).
Однако, когда я использую ...stuffing результат равен undefined.
Помогите мне, как исправить эту задачу, чтобыон учитывает стоимость всех ингредиентов.

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());

1 Ответ

0 голосов
/ 02 октября 2018
  • Вы не можете использовать функцию стрелки так, как вы использовали, вам нужно вместо этого использовать старое доброе объявление function (или также использовать синтаксический сахар es6 class).Посмотрите на этот ответ , чтобы понять, почему (в вашем случае вместо получения объекта Hamburger вы получаете глобальный объект window).
  • Не используйте humb1 для реализации calculatePrice, которая является функцией, являющейся частью прототипа класса, тогда как humb1 является экземпляром класса.
  • stuffing являетсямассив.Вам нужно поработать над каждым предметом, чтобы получить общую стоимость.Я использовал reduce здесь.

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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...