2014-07-10 12 views
0

我的循環沒有看過數組中的第一項。我試圖讓它如果一個項目已經在數組中,它會通過它。任何想法,我做錯了什麼?我的循環沒有看過數組中的第一個項目。 angularjs

function DBController($scope){ 

    $scope.itemName = " "; 
    $scope.nameArray = ['Bread', 'Milk', 'Eggs']; 

    $scope.addItem = function(){ 
     console.log($scope.itemName); 
     for (var i = 0; i < $scope.nameArray.length; i++) { 

      if ($scope.itemName === " ") { 
       alert("I'm sorry, but you have to enter an item to add to this list."); 

       $scope.itemName = " "; 
       break; 

      }else if ($scope.itemName === $scope.nameArray[i]){ 
       alert("I'm sorry, but the item you are trying to add is already in your list."); 

       $scope.itemName = " "; 
       break; 
      }else{ 
       $scope.nameArray.push($scope.itemName); 

       $scope.itemName = " "; 
       break; 
      }; 

     }; 

    } 
    $scope.deleteName = function(deletedName){ 
     var idx = $scope.nameArray.indexOf(deletedName); 
     $scope.nameArray.splice(idx, 1); 
    } 
} 

回答

1

break語句終止循環。請參閱here

0

你的循環邏輯有點錯誤。第一次迭代後,將新的itemName添加到數組(如果不是Bread),並且您的代碼正在打破循環請參閱此處@http://jsbin.com/huyul/2/edit?html,js,output

$scope.addItem = function(){ 
    console.log($scope.itemName); 
    for (var i = 0; i < $scope.nameArray.length; i++) { 

     if ($scope.itemName === " ") { 
      alert("I'm sorry, but you have to enter an item to add to this list."); 

      $scope.itemName = " "; 
      return; 

     }else if ($scope.itemName === $scope.nameArray[i]){ 
      alert("I'm sorry, but the item you are trying to add is already in your list."); 

      $scope.itemName = " "; 
      return; 
     } 

    } 


     $scope.nameArray.push($scope.itemName); 
     $scope.itemName = " "; 



}; 
相關問題