Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 购物篮指数_Javascript_Indexof - Fatal编程技术网

Javascript 购物篮指数

Javascript 购物篮指数,javascript,indexof,Javascript,Indexof,我试图使用indexOf来确定我传递给它的对象是否已经在数组中。它似乎不起作用。下面是将项添加到数组的代码 Javascript: add: function(id, item, description, price, itemObj) { if(items.indexOf(itemObj) == 1) { console.log(itemObj); items.forEach(function(item){

我试图使用indexOf来确定我传递给它的对象是否已经在数组中。它似乎不起作用。下面是将项添加到数组的代码

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语句,并且总是向数组传递新对象。

我不确定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
,并且使用
indexOf
查找
a
,则返回值将为0,因为第一次比较是在开头。要搜索最后一次比较,请使用
lastIndexOf

调用函数中的项,并以与调用不一致的方式使用下面的项。很抱歉,您能解释一下吗?您有一个函数(id,
item
,description…在您使用的代码
item
s中进一步说明,而不是在forEach函数中使用
item
的indexOf和forEach的item。items与item不同。items是一个全局数组,正在检查其中as item是传递到方法中的变量。明白了…正在使用代码我明白了。全局项会让事情变得混乱。你能解释得更清楚一点吗?这个答案是错误的-
Array.prototype.indexOf()
确实存在(尽管在一些旧浏览器中不可用),并且建议的解决方案只适用于字符串匹配,如
items.join(“”)
将首先将数组的每个元素转换为字符串。对于对象,它可能是
[object object]
,因此不会太有用。第一:我不知道
是对象的集合。第二:我开始回答“我不确定indexOf是否在数组中查找匹配的值”.我只是想帮忙。