如何使用AngularJS计算已检查的类别

时间:2015-04-23 12:13:21

标签: javascript angularjs

朋友们,我们有一个范围变量的数组类别。需要在不使用for循环的情况下计算checked(checked:true)类别。有什么办法吗?请建议。感谢名单。

 $scope.categories = [
                       {categoryId : '1', checked: true}, 
                       {categoryId : '2', checked: true},         
                       {categoryId : '3', checked: false}, 
                       {categoryId : '4', checked: false}
                    ];

4 个答案:

答案 0 :(得分:4)

你说你不想循环,但不解释原因?如果您的阵列长度未知,我认为您可以避免循环。在您的情况下,filter可以解决问题。

为清晰起见而更新
这将在后台使用循环。

var count = $scope.categories.filter(function(cat) { 
    return cat.checked === true 
}).length;

答案 1 :(得分:2)

假设您的数据是:

 $scope.categories = [
                      {categoryId : '1', checked: true}, 
                      {categoryId : '2', checked: true},         
                      {categoryId : '3', checked: false}, 
                      {categoryId : '4', checked: false}
                     ];

var total = $scope.categories.reduce(function(t,item){
                return t + +item.checked;
            },0)

答案 2 :(得分:1)

如果你真的想避免使用任何类型的循环,你必须提前知道数组中的项目数量。

假设您的示例是固定数据,那么您只需使用此

即可

var count = $scope.categories[0].checked + $scope.categories[1].checked + $scope.categories[2].checked + $scope.categories[3].checked

得到计数。任何其他解决方案都将使用某种循环。

  

在计算机编程中,循环是一系列指令,它们会不断重复,直到达到某个条件。

答案 3 :(得分:0)

使用下划线/ lodash:

var count = _.filter($scope.categories, {checked: true}).length;