2016-01-22 25 views
0

我试图创建一个函数来检查一个人是否投了票。Javascript - 检查传入对象的嵌入式数组值

当用户对交易进行投票时,他们的姓名将被添加到选民阵列中。

基本上我想检查,如果传入的交易对象,选民数组包含登录的用户

我该怎么检查呢?

功能

$scope.upVoteHome = function(deal) { 

    if(XXXXXX){ 

     // User has not voted already. 

    }else{ 

     deal.votes++; 
     deal.voters.push(user); 
     deal.$update(function() { 
      //$location.path('deals/' + deal._id); 
     }, function(errorResponse) { 
      // rollback votes on fail also 
      $scope.error = errorResponse.data.message; 
     }); 
    } 



}; 

中的交易模式

var ItemSchema = new Schema({ 
    title: { 
     type: String, 
     default: 'NA', 
     required: 'Please fill Item title', 
     trim: true 
    }, 
    voters: [{ 
     type: Schema.ObjectId, 
     ref: 'User' 
    }] 

}); 

感谢

回答

1

您可以使用array.filter()

$scope.upVoteHome = function(deal) { 

    var hasVoted = deal.voters.filter(function(voter) { 
     return voter.ref == $scope.loggedInUser; 
    }).length > 0; 

    if(!hasVoted) { 

     // User has not voted already. 

    } else { 
     // ... 
    } 
} 
+0

很好地工作。谢谢。 – ChrisM