javascript - 只推送一个项目而不是推送多个对象

标签 javascript arrays angularjs ionic-framework

我正在尝试将一个新项目推送到收藏列表中,我使用了一个 for 循环来检查该项目是否已存在于收藏列表中。

但是,不是一次推送新项目,而是推送重复数量的新项目。

解决此问题的最佳方法是什么?

提前致谢!


$scope.favlist = JSON.parse($window.localStorage.getItem("favlist"));
    console.log($scope.favlist);

    $scope.toggleStar = function(item) {
      item.star = !item.star;
      console.log(item); //object


      var favlistcontent = $window.localStorage.getItem("favlist");
        console.log(favlistcontent); //string

        if(typeof favlistcontent !== 'string'){
         $scope.favlist = [];
         $window.localStorage.setItem("favlist",JSON.stringify($scope.favlist));
       }
       $scope.favlist = JSON.parse($window.localStorage.getItem("favlist"));
      console.log($scope.favlist); //object
      console.log($scope.favlist.length);

      console.log(angular.equals($scope.favlist[0],item)); //true
      for(i=0; i<$scope.favlist.length; i++){
        if(angular.equals($scope.favlist[i],item)){
          console.log("item already exists");


       }
       else {
        $scope.favlist.push(item);
        $window.localStorage.setItem("favlist",JSON.stringify($scope.favlist));
      }
    }

最佳答案

一旦找到相等的项目,您需要打破循环,否则它将继续并在检查到不相等的项目时添加项目。

var duplicate = false;


for (i = 0; i < $scope.favlist.length; i++) {
    if (angular.equals($scope.favlist[i], item)) {
        console.log("item already exists");
        //break loop here
        duplicate = true;
        break;
    }

}

if (!duplicate){
    $scope.favlist.push(item);
    $window.localStorage.setItem("favlist", JSON.stringify($scope.favlist));
}

关于javascript - 只推送一个项目而不是推送多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636006/

相关文章:

javascript - Angular.JS $http API 请求

AngularJS:ng-click是 "a good practice"吗?为什么 AngularJS 中没有 ng-{event}?

javascript - 如何在 JavaScript 中创建一个返回本地文本文件值的函数?

javascript - 禁用谷歌地图上的缩放和链接

javascript - 多个 Rhino (java) 线程操作同一个文件

arrays - 如何计算两个数组中的匹配项?

Java - 如何解决这个二维数组沙漏?

javascript - 使用 javascript 滚动查看 firefox

javascript - 我的游戏中数组未重置

javascript - Angular JS - 在一个 Controller 中运行两个函数