javascript - 使用 inArray() 检查 javascript 数组中的数字

标签 javascript jquery arrays json

我正在为产品列表构建一个网络购物车,方法是将它们添加到名为“oitems”的数组中。我正在使用 JSON 语法。以下函数旨在接受“quant”(产品数量)、“prod”(产品 ID)、“name”(产品名称)、“price”(产品价格)和“order”(包含“oitems”的对象) ' 大批)。当有人单击产品旁边的“添加”按钮时,该函数就会触发。

“prod”(产品 ID)范围为 1-30。我希望该函数在添加新产品时添加到“oitems”数组中,如果有人决定在添加“产品”后增加“数量”,则更新产品的现有数量。它会这样做,直到“prod”编号达到“10”,我不知道为什么。我认为“1”和“10”之间混淆了,但我不知道如何解决这个问题。有什么想法吗?

function updateOrder(quant, prod, name, price, order) {

    var cnt = 0;

    //loop through the array to see what we have
    $.each(order.oitems, function(x, y) {

        //see if the product is already in the array   
        if ($.inArray(prod, order.oitems[x].product) !== -1) {

            // product is already in the cart, update with new quantities
            order.oitems.splice(x, 1, {
                "quantity": quant,
                "product": prod,
                "name": name,
                "price": price
            });
            cnt++;
            feedback("You already have this product. The quantities have been updated.");
        }

    });


    if (cnt == 0) {
        order.oitems.push({
            "quantity": quant,
            "product": prod,
            "name": name,
            "price": price
        });
        feedback("This product has been added to your order.");
    }
}

最佳答案

我怀疑您将一个字符串传递给 updateOrder 函数的参数 prod 。当您在字符串上使用 $.inArray() 时,它会将其作为单个字符的数组进行处理。

更具体地说,字符串“10”是一个由两个字符组成的数组:1 和 0。如果您的项目数组中已包含产品 1,则执行的测试之一将进行是这样的:$.inArray("10", "1"),它会通过,因为“1”是形成字符串“10”的字符之一。

您可以而且应该将您的情况简化为以下内容:

if(prod == order.oitems[x].product) {...}

关于javascript - 使用 inArray() 检查 javascript 数组中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607088/

相关文章:

javascript - 使用 botbuilder SDK 的 Prompt.choice(),是否可以有一个显示长选择文本的自定义工具提示?

javascript - jQuery setInterval 问题

javascript - 如何使用 Protractor 通过 CSS 代码单击元素?

javascript - ASP.NET - 将数据从我的模型获取到 JavaScript 变量中并使用所述变量填充文本区域

javascript - 如何通过单击图像打开文本?

java - 在这种情况下保存响应集的更好方法是什么?

javascript - Angular JS 访问基于存储在字符串中的 ng-model 的输入值

javascript - 将下拉值传递给 JavaScript 函数并将它们存储为数组

javascript - 在运行时在 Ember AppKit 应用程序中启用功能标志

javascript - 可拖动的div问题