найти сумму всех товаров reduce()

Практикуюсь js. Есть задача, Реализуйте функцию calculatePrice, которая принимает массив заказов, а возвращает сумму их стоимостей. Каждый объект заказа содержит поле price, в котором хранится стоимость товара в числовом формате.

Суммой пустого массива должен быть 0. Если массив не передан, то суммой так же должен быть 0.

Пример:

const data = [
 {
  type: 'food',
  price: 130,
}.
  {
type: 'clothes',
price: 7300,
},
  {
type: 'other',
price: 1400,
}
]
calculatePrice(data); // 8830‬

Я никак не могу пойму как мне обратиться к price

const calculatePrice = (orders) => {
 if(orders === undefined) {
 return 0 ;
}else if (orders.length === 0) {
 return 0;
 }else {
return orders.reduce((acc, curr) => acc + curr);
 }
}

Ответы (2 шт):

Автор решения: Aziz Umarov

Вот так попробуйте

const data = [
 {
  type: 'food',
  price: 130,
},
  {
type: 'clothes',
price: 7300,
},
  {
type: 'other',
price: 1400,
}
];

const calculatePrice = (orders) => {
 if(orders === undefined) {
 return 0 ;
}else if (orders.length === 0) {
 return 0;
 }else {
return orders.reduce((acc, curr) => {return acc + curr.price;}, 0);
 }
}

console.log(calculatePrice(data)); // 8830‬

→ Ссылка
Автор решения: Grundy

Вторым параметром в callback передаваемый в функцию reduce приходит элемент массива.

В данном случае cur - это объект с нужными полями, поэтому у него можно просто получить значение нужного свойства cur.price.

Также, вторым параметром передается начальное значение аккумулятора, которое будет возвращено в случае если массив пуст.

Таким образом можно убрать лишнюю проверку if (orders.length === 0)

и получить простой код: .reduce((acc, cur) => acc + cur.price, 0)

→ Ссылка