我正在尝试使用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语句,并且总是诉诸于将新对象传递给数组。
答案 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
。