2017-05-09 107 views
1

我目前正在编写一个小函数,以便从输入字段获取$ scope值,然后将其添加到包含受邀用户的新数组中。

为了防止重复的条目进入数组我试图使用JavaScript的过滤方法。

我的问题是当我看什么是输出到控制台,过滤器函数内的console.log总是打印相同的电子邮件值,它似乎没有更新,并考虑新的输入。例如用户添加了2个用户,第一个将被添加,并且invitesArr将仅包含第一个电子邮件。

 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

任何使用相同变量** invitesArr **的数组,内部过滤器函数和布尔条件的具体原因 –

+0

不是,我只需要检查Email值是否具有与原始数组相匹配的值。例如,如果$ scope.invites包含x,那么我需要检查新的$ scope.searchContacts是否与x匹配 – theHussle

回答

0

试试下面的代码:

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); 
      }); 
     } 
    } 

希望它可以帮助!

相关问题