朋友们,我们有一个范围变量的数组类别。需要在不使用for循环的情况下计算checked(checked:true)类别。有什么办法吗?请建议。感谢名单。
$scope.categories = [
{categoryId : '1', checked: true},
{categoryId : '2', checked: true},
{categoryId : '3', checked: false},
{categoryId : '4', checked: false}
];
答案 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;