购物篮indexOf

时间:2014-12-02 18:07:58

标签: javascript indexof

我正在尝试使用indexOf来确定我传递的obj是否已经在数组中。它似乎不起作用。以下是将项添加到数组的代码。

使用Javascript:

add: function(id, item, description, price, itemObj) {
            if(items.indexOf(itemObj) == 1) {
                console.log(itemObj);
                items.forEach(function(item){
                    if(item.id === id){
                        item.itemCount += 1;
                    };
                });
            } else {
                console.log(itemObj);
                items.push(new basket.Item(id, item, description, price));
            };
            basket.print();
        }

为了更具描述性,它永远不会运行if语句,并且总是诉诸于将新对象传递给数组。

1 个答案:

答案 0 :(得分:0)

我不确定indexOf是否寻找匹配数组中的值。我认为它只匹配字符串中的子字符串。另外,您应该检查返回的值是否大于或等于零:

if(items.join("").indexOf(itemObj) >= 0) {

好吧,join函数连接值来构建一个字符串,例如:

items = ["first", "second", "third"];

items.join("");

// now items = "firstsecondthird";

var ind = items.join("").indexOf("first"); //ind here is greater or equal than 0

var ind = items.join("").indexOf("firstone"); //ind here is equal -1 (any comparison in the string)

请注意indexOf正在搜索字符串中的第一个比较。如果您使用此字符串abcdefga并且您使用a查找indexOf,则返回的值将为0,因为第一个比较位于开头。要搜索最后一次比较,请lastIndexOf