2017-05-09 4 views
1

Ich schreibe gerade eine kleine Funktion, um einen $ scope-Wert aus einem Eingabefeld zu nehmen, und dann zu einem neuen Array mit eingeladenen Benutzern hinzufügen.

Um doppelte Einträge in das Array zu verhindern, versuche ich die JavaScript-Filtermethode zu verwenden.

Mein Problem ist, wenn ich sehe, was auf der Konsole ausgegeben wird, die console.log innerhalb der Filterfunktion druckt immer den gleichen E-Mail-Wert, es scheint nicht zu aktualisieren und die neue Eingabe zu berücksichtigen. z.B. ein Benutzer hat 2 Benutzer hinzugefügt, der erste wird hinzugefügt und der InvitesArr enthält nur die erste E-Mail.

 var invitesArr = $scope.invites; 
     console.log(invitesArr) 
     console.log($scope.searchContacts) 

     if ($scope.invites.length >= 0) { 
      invitesArr.filter(function(invitesArr) { 
       console.log(invitesArr.Email) 
       return invitesArr.Email === $scope.searchContacts; 
      }); 

      if (invitesArr == false) { 
       courseAccountService.inviteGuestToCourse($scope.courseId,$scope.searchContacts). 
       then(function(invitation) { 
        $scope.invites.push(invitation); 
       }); 
      } 
     } 
+0

Jeder spezifische Grund für die Verwendung der gleichen Variablen ** InvitationArr ** für Array, innerhalb der Filterfunktion und boolesche Bedingung –

+0

Nicht wirklich, ich muss nur überprüfen, ob der Email-Wert einen Wert aus dem ursprünglichen Array hat. ZB wenn $ scope.invites x enthält, dann muss ich prüfen, ob der neue $ scope.searchContacts mit x übereinstimmt – theHussle

Antwort

0

Versuchen Sie, den folgenden Code:

var invitesArr = $scope.invites; 
    console.log(invitesArr) 
    console.log($scope.searchContacts) 

    if ($scope.invites.length >= 0) { 
     //use arrow operator instead of function. 
     var duplicateEmails = invitesArr.filter((item) => { 
      console.log(invitesArr.Email) 
      //assuming datatype of item.Email and $scope.searchContacts are same else use == for comparision 
      return item.Email === $scope.searchContacts; 
     }); 

     //Check for length and then push to your invites 
     if (duplicateEmails.length==0) { 
      courseAccountService.inviteGuestToCourse($scope.courseId,$scope.searchContacts). 
      then(function(invitation) { 
       $scope.invites.push(invitation); 
      }); 
     } 
    } 

Hoffe, es hilft !!