javascript - 如何在引用嵌套函数内部参数的函数内部使用条件语句在 javascript 中返回结果?
问题描述
我有一个购物车,我需要在其中向当前获取商品价格并将其乘以数量的函数添加条件折扣。目前,该功能就像没有折扣的魅力,但折扣需要能够判断是否有两个或多个具有相同“标签”的商品(例如“奶酪披萨”、“蘑菇披萨”、“夏威夷披萨”)然后从返回的总数中减去一个金额以使其工作。我如何实现这一目标?
此函数获取用户购物车中所有商品的总价格金额
get totalAmount() {
let total = 0;
this.cart.forEach(item => (total += this.getItemTotal(item)));
///// possible conditional statement here
////// something like if (item.tags == "cheese"){
/////// return total - 2; }
//////// ( currently just errors out to "**item not found**" even though I thought
///// since the parameter "item" was in the function within the function it could recognize it)
return total;
}
这个函数在上面的函数里面。它用于获取单个项目的小计,包括它的选项
getItemTotal(item) {
let total = item.price * item.quantity;
item.options.forEach(option => (total += option.value * item.quantity));
return total;
}
下面是一个带有奶酪“标签”的项目示例。条件块需要判断是否有两个标签与奶酪相似,然后在第一个函数中从总数中取出 2 美元
"item": [
{
"id": 1,
"guid": "1d4aa3b2-c059-4fa7-a751-9bca735e4ea1",
"thumb": "https://foodorderingapp9309.s3-us-west-
1.amazonaws.com/CheesySenstions/menu/CheesePizza.JPG",
"title": "Cheese",
"body": "try new cheese pizza",
"tags": ["pizza"],
}
]
解决方案
您可以访问forEach
循环回调中的项目。
您可以使用计数器来计算具有特定标签的项目数。这是一个例子:
get totalAmount() {
let total = 0;
let numberOfItemsWithCheeseTag = 0;
this.cart.forEach(item => {
total += this.getItemTotal(item);
// Increment the counter if 'cheese' is one of the tags
if (item.tags.includes('cheese')) {
numberOfItemsWithCheeseTag += 1; //
}
});
// Apply the discount if the counter reached a threshold
if (numberOfItemsWithCheeseTag >= 2) {
total -= 2;
}
return total;
}
推荐阅读
- coldfusion - 带有 ColdFusion 的 reCaptcha v3
- javascript - 在同一页面上处理 AJAX 请求 - PHP
- android - Android Studio 是否支持所有 Kotlin 功能和 API?
- python - 用硒进行网页抓取
- sql - SQL 搜索 - 两列不同的值
- kubernetes - Rancher Cluster `cloud_provider` YAML:如何在 YAML 中使用 Active Directory 域凭据(即带有反斜杠的用户名)?
- php - 我试图弄清楚如何使用表单将包含 html 代码的 php 变量传递到另一个页面
- multithreading - 如何捕获对演员的 Dispatcher.Invoke 调用?
- amazon-web-services - AWS ALB 侦听器规则 - OIDC - Google Oauth
- contact-form-7 - 电子邮件正文 img 标签上的联系表格 7 图像