найти сумму всех товаров 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 шт):
Вот так попробуйте
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
Вторым параметром в callback передаваемый в функцию reduce приходит элемент массива.
В данном случае cur - это объект с нужными полями, поэтому у него можно просто получить значение нужного свойства cur.price.
Также, вторым параметром передается начальное значение аккумулятора, которое будет возвращено в случае если массив пуст.
Таким образом можно убрать лишнюю проверку if (orders.length === 0)
и получить простой код: .reduce((acc, cur) => acc + cur.price, 0)