get count of items with some property in an array

I have an array of objects as follow.

$scope.students = [{'isSelected': true},
    {'isSelected': true},
    {'isSelected': false},
    {'isSelected': true},
    {'isSelected': true},
]

How can i get the count items that have isSelected property set to true ?

UPDATE:

The problem is $scope.students is fetched from a REST api and simply looping over the $scope.students variable does not work as the variable is undefined until the request is completed, and so the loop code errors out saying $scope.students is not defined.

I tried using $watch but in that case i have to define the loop under the watch directive and it only works one time when $scope.students is defined, after that the loop does not work as $scope.students itself is not changing.

You can add the following method to your controller. Variable selectedStudentsCount in your scope will keep number of all selected students (where isSelected is set to true).

Function counting selected users in angular.forEach will be executed only if studentsis not empty. Otherwise for empty students variable selectedStudentsCount will return 0.

$scope.selectedStudentsCount = function() {
    var count = 0;
    angular.forEach($scope.students, function(student){
        count += student.isSelected ? 1 : 0;
    });
    return count; 
}

Please note that selectedStudentsCount is a function so it will have to be called with () in your template e.g.

<h2>Total selected students: {{selectedStudentsCount()}}</h2>

There is another way to do this: the AngularJS filters. You can write this:

var selectedCount = $filter('filter')($scope.students, { isSelected: true }).length;