javascript - if 语句中的 && 运算符与 for in 循环没有给出正确的答案

标签 javascript html arrays for-loop if-statement

我为我制作的网站提供了购物车系统。我目前正在尝试在结帐页面中创建折扣优惠。我已经整理了一个 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”,但是当我使用 OR 运算符时它可以工作。但这是行不通的,因为我需要代码同时识别所有 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) 检查所有三个可能的名称。因此,您的代码永远不会返回“yes”,因为同一项目永远不会有三个不同的名称。

解决此问题的一种方法可能是使用三个 bool 值,它们以 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");
}

您还可以仅在 bool 值设置为 true 时进行测试,检查其他两个值是否已为 true,而不是在每个循环上进行测试。如果您更喜欢switch,也可以使用if ... else if ...。有很多方法可以实现您想要的目标。

关于javascript - if 语句中的 && 运算符与 for in 循环没有给出正确的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55228103/

相关文章:

javascript - D3 转换后通过 selectAll 进行过滤

javascript - JavaScript 减少

html - 是否可以仅在移动设备上使用 Twitter Bootstraps .navbar-fix-to-top?

javascript - 使用 JavaScript 将每个数组元素的首字母大写

javascript - 将对象数组转换为不同结构对象的数组

javascript - 在 Apps 脚本中使用索引对数组进行子集化

如果表单中的元素少于一个,Javascript 将返回 'undefined'。

html - C++:如何递归/迭代搜索 HTML 文件(使用 Boost C++)?

javascript - 像 facebook IOS 应用程序一样的 CSS 动画菜单

python - 如何在 numpy 中使用 dtype 构造一维数组