products - объект со свойствами "имя продукта":"цена за единицу" order - объект со свойствами "имя продукта":"количество единиц". Нужно перемножить одниковые значения ключей этих объектов, необходимо использовать reduce
const products = {
bread: 10,
milk: 15,
apples: 20,
cheese: 30,
chicken: 40
};
const orderA = {
bread: 2,
apples: 4,
chicken: 1
};
const orderB = {
bread: 1,
milk: 2,
cheese: 3
};
// Вызовы функции для проверки
console.log(getTotalPrice(products, orderA)); // 140
console.log(getTotalPrice(products, orderB)); // 130
Нужно перемножить одниковые значения ключей этих объектов, необходимо использовать reduce
если нужно - дак премножьте. необходимо - используйте.
const products = {
bread: 10,
milk: 15,
apples: 20,
cheese: 30,
chicken: 40
};
const orderA = {
bread: 2,
apples: 4,
chicken: 1
};
const orderB = {
bread: 1,
milk: 2,
cheese: 3
};
getTotalPrice = function(p, o){
return Object.keys(p).reduce(function(acc, pkey){
return o.hasOwnProperty(pkey) ? acc + p[pkey] * o[pkey] : acc;
}, 0);
}
// Вызовы функции для проверки
console.log(getTotalPrice(products, orderA)); // 140
console.log(getTotalPrice(products, orderB)); // 130
Так как нужно найти сумму для order*
, достаточно взять его поля и значения, и сворачивая полученный массив умножать значение, на значение соответствующего поля из products.
Для получения списка массивов (поле, значение), можно воспользоваться функцией Object.entries
Далее полученный массив можно свернуть воспользовавшись функцией reduce
В итоге может получиться следующий код:
const products = {
bread: 10,
milk: 15,
apples: 20,
cheese: 30,
chicken: 40
};
const orderA = {
bread: 2,
apples: 4,
chicken: 1
};
const orderB = {
bread: 1,
milk: 2,
cheese: 3
};
getTotalPrice = function(products, order) {
return Object.entries(order).reduce((acc, [product, count]) => acc + products[product] * count, 0);
}
// Вызовы функции для проверки
console.log(getTotalPrice(products, orderA)); // 140
console.log(getTotalPrice(products, orderB)); // 130
Еще вариант
function getTotalPrice(products, orderA) {
return [products, orderA].reduce(function (previous, current) {
if (!previous) {
return current;
} else {
var sum = 0;
for (var key in current) {
if (previous[key]) {
sum += current[key] * previous[key];
}
}
return sum;
}
}, null);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть не большой скрипт для плагина jquery waypoints, код:
При изменении файла HTML не происходит перезагрузка страницы, хотя в командной строке пишет якобы страница перезагрузилась, в чем дело?