我为我创建的网站有购物车系统。我目前正在尝试在结帐页面中创建折扣交易。我已经汇总了一个IF语句,但它不太有用。请参阅下面:
for (var i in cartArray) {
if((cartArray[i].name=="Shampoo") &&
(cartArray[i].name=="Drinks Can") &&
(cartArray[i].name=="Small Brush"))
{
console.log("yes");
} else {
console.log("no");
}
}
我在控制台中获得" 5 no",但是当我使用或操作员时,它可以工作。但这不会做到我需要代码同时识别所有3个,以便我可以进一步折扣。先感谢您。
ps。这是控制台的完整外观:
(5) [{…}, {…}, {…}, {…}, {…}]
0: {name: "500ml Conditioner", price: 1.5, count: 1, total: "1.50"}
1: {name: "1.5L Bleach", price: 2.5, count: 1, total: "2.50"}
2: {name: "Small Brush", price: 2.5, count: 1, total: "2.50"}
3: {name: "Shampoo", price: 4, count: 1, total: "4.00"}
4: {name: "Drinks Can", price: 1, count: 1, total: "1.00"}
您想在通过购物车迭代时检查项目名称。不过,现在,您正在检查每个通过的同一项目(cartArray[i].name
)的所有三个可能的名称。因此,您的代码永远不会返回"是",因为同一项目永远不会有三个不同的名称。
解决此操作的一种方法可能是使用三个启动false并在名称匹配时设置为true的布尔值。例如:
var shampoo = false;
var drinks = false;
var brush = false;
for (var i in cartArray) {
switch (cartArray[i].name) {
case "Shampoo":
shampoo = true;
break;
case "Drinks Can":
drinks = true;
break;
case "Small Brush":
brush = true;
break;
}
if (shampoo && drinks && brush) {
console.log("yes");
break;
}
}
if (!shampoo || !drinks || !brush) {
console.log("no");
}
而不是在每个循环上测试,您还可以在设置布尔值的情况下进行测试,以检查其他两个已经是正确的。如果您希望使用switch
,也可以使用if ... else if ...
。实现您想要的东西的许多方法。
好吧,我不确定您要实现的目标与运营商同时。要么为您的目的使用开关语句,要么将IF-S进行。您可以做类似的事情:
for (var i in cartArray)
{
switch cartArray[i]:
case "Shampoo":
// do what you need
break;
case "Drinks Can"
// do something
break;
default: console.log("no")
}
在此处阅读有关Switch语句的信息