📅  最后修改于: 2023-12-03 15:27:14.485000             🧑  作者: Mango
本文介绍了如何使用JavaScript解决Hackerrank电子商店问题。这个问题的要求是根据商品列表和购物车中的项目列表来计算总支付金额,并打印发票详情。
我们可以为每个购物车项目循环并计算相应商品的总价格。这可以通过使用Array.reduce()高阶函数来实现,如下所示:
function getTotalCost(cart, items) {
let totalCost = cart.reduce((sum, itemId) => {
const item = items.find(item => item.id === itemId);
return sum + item.price;
}, 0);
return totalCost.toFixed(2);
}
这个函数接收两个参数:cart
(购物车项目列表)和items
(商品列表)。此函数中的reduce()
高阶函数将为每个购物车项目循环并计算相应商品的总价格。reduce()
接受一个匿名函数作为参数,该函数有两个参数:sum
和itemId
。您还需要使用Array.find()方法从商品列表中查找与购物车项目匹配的商品对象。最后将总价格totalCost
作为字符串返回(保留两位小数)。
打印发票详情的最简单方法是循环遍历购物车项目并在每个项目上调用打印函数。代码实现如下:
function printInvoice(cart, items) {
console.log("Invoice Details:");
cart.forEach(itemId => {
const item = items.find(item => item.id === itemId);
console.log(`${item.name}: ${item.price.toFixed(2)}`);
});
console.log(`Total: ${getTotalCost(cart, items)}`);
}
这个函数接收两个参数:cart
(购物车项目列表)和items
(商品列表)。此函数将打印发票详情并循环遍历购物车中每个项目,并使用Array.find()方法从商品列表中查找与购物车项目匹配的商品对象。最后,它将调用getTotalCost()
函数来计算总价格。
通过使用JavaScript的高阶函数和数组方法,我们可以轻松地解决Hackerrank电子商店问题。这两个函数可以方便地集成到您的应用程序中,以便自动化购物车清单和发票生成。