2017-05-09 40 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); 
      }); 
     } 
    } 

希望它可以幫助!

相關問題