我正在尝试检查一个对象是否在数组中,我已经设法做到了这一点,但是我无法在 block 中运行代码。这是代码片段:
basket.add = function(item) {
for(var i = 0; i < this.items.length; i++){
if(item === this.items[i]){
basket.items[i].count += 1;
}else{
basket.items.push(item);
};
};
basket.print();
};
当我在没有 if 语句的情况下运行代码时,除了再次推送 obj 之外,它工作得很好。当我检查并推送 obj(如果它不在数组中)时,此代码不起作用。
最佳答案
当前代码循环遍历 items
,每次在 items
中找到值时将对 item
的另一个引用推送到数组末尾与 item
不匹配。我认为这不是您想要的。
您可以使用
basket.add = function(item) {
var i = basket.items.indexOf(item);
if (i == -1) {
basket.items.push(item);
}
else {
basket.items[i].count += 1;
}
};
对于 IE8 及更早版本的用户,.indexOf
将不起作用,因此如果这很重要,您可以添加 this polyfill .
关于javascript - 检查 Obj 是否在数组中,如果不在则运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135966/