javascript - 检查 Obj 是否在数组中,如果不在则运行代码

标签 javascript arrays array-push

我正在尝试检查一个对象是否在数组中,我已经设法做到了这一点,但是我无法在 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/

相关文章:

javascript - 制作网络应用的离线版本

javascript - 使用 .map 函数将所有数组内容字符串化

c - 如何在c中声明数组

javascript - Parse.com 循环内查询

php - 如何在 PHP 的 foreach 循环中使用 array_push?

javascript 仅带回文本的特定部分(codeigniter 和 JQuery)

javascript - HTML5 服务器发送的事件不是实时的?

JavaScript 在数组中存储搜索匹配项

带有索引和键的 php array_push

php - 使用关联数组进行数组推送