获取数组中具有某些属性的项的计数。

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我有一个对象数组,如下所示。

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

我如何才能得到有isSelected属性设置为true

最新情况:

问题是$scope.students是从RESTAPI中获取的,只需遍历$作用域。undefined直到请求完成为止,所以循环代码错误指出$scope.students is not defined

我试着用$watch但是在这种情况下,我必须在Watch指令下定义循环,并且它只在定义$作用域时工作一次。

提问于
用户回答回答于

可以将以下方法添加到你的控制器。selectedStudentsCount范围内的变量将保留所有选定学生的数量(其中isSelected设置为true)。

功能计数选定的用户angular.forEach只有将被执行students不为空。否则, students变量selectedStudentsCount将返回0

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

请注意,这selectedStudentsCount是一个函数,因此必须()在您的模板中调用,例如

<h2>Total selected students: {{selectedStudentsCount()}}</h2>
用户回答回答于

还有另一种方法:AngularJS过滤器。你可以这样写:

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

扫码关注云+社区