2014-07-10 1 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

루프 논리에 약간의 오류가 있습니다. 첫 번째 반복 후 new itemName이 배열에 추가되었으며 (빵이 아닌 경우) 코드가 루프를 깨는 경우 여기를 참조하십시오. @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 = " "; 



}; 
관련 문제