Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript (Angular.js)如何通过过滤器计算数组中有多少项?_Javascript_Angularjs - Fatal编程技术网

Javascript (Angular.js)如何通过过滤器计算数组中有多少项?

Javascript (Angular.js)如何通过过滤器计算数组中有多少项?,javascript,angularjs,Javascript,Angularjs,在angular JS中,我有一个变量来跟踪人们及其年龄 $scope.people = [ { name: "Lucy", age: "18" }, { name: "Michael", age: "24" }, { name: "Lisa", age: "46" } ]; 用户可以通过一个简单的表单添加更多的人: <input ng-model="newPe

在angular JS中,我有一个变量来跟踪人们及其年龄

$scope.people = [
    {
        name: "Lucy",
        age: "18"
    }, {
        name: "Michael",
        age: "24"
    }, {
        name: "Lisa",
        age: "46"
    }
];
用户可以通过一个简单的表单添加更多的人:

<input ng-model="newPerson.name">
<input ng-model="newPerson.age">
<button ng-click="addNewPerson()">Add</button>

添加

在页面底部,我想要一个简单的饼图,显示按年龄组划分的人口,例如(>18,18-25,26-35,36-45,45您可以使用如下库:
($scope.people)。filter(x=>x.age>18&&x.age 18&&item.age您可以使用如下库:
($scope.people)。filter(x=>x.age>18&&x.age 18&&item.age这里有一种使用and实现此功能的方法。请注意,此筛选器应用于
$scope.agebrands
,其中包含由
forEach
循环准备的预处理数据。这对于小范围值(如人的年龄)非常有效。如果您不使用ng
ng repeat
,您不想多次过滤数据

angular.module('ageBracketApp',['ageBracketApp.controllers']);
angular.module('ageBracketApp.controllers',[]).controller('ageBracketController',['$scope',
职能($范围){
$scope.age括号=[];
$scope.people=[{
姓名:“露西”,
年龄:“18”
}, {
姓名:“迈克尔”,
年龄:“24”
}, {
姓名:“丽莎”,
年龄:"46"
}];
angular.forEach($scope.people,function(value,key){
$scope.agebrands[value.age]=$scope.agebrands[value.age]+1 | | 1;
});
$scope.addPerson=函数(){
var age=Math.floor(Math.random()*(123-1+1))+1;//在1和123之间随机
$scope.people.push({
名称:'Person'+($scope.people.length+1),
年龄:年龄
});
$scope.agebrands[age]=$scope.agebrands[age]+1 | | 1;
};
$scope.ageBracketCount=函数(最小值、最大值){
max=max | | Number.max|u SAFE|u整数;
返回$scope.age括号.filter(函数(值、索引、数组){

return index>=min&&index这里有一种使用and实现此功能的方法。请注意,此筛选器应用于
$scope.agebrands
,其中包含由
forEach
循环准备的预处理数据。这对于小范围值(如人的年龄)非常有效。如果不使用
ng-r,这是一种替代方法epeat
并且您不希望多次过滤数据

angular.module('ageBracketApp',['ageBracketApp.controllers']);
angular.module('ageBracketApp.controllers',[]).controller('ageBracketController',['$scope',
职能($范围){
$scope.age括号=[];
$scope.people=[{
姓名:“露西”,
年龄:“18”
}, {
姓名:“迈克尔”,
年龄:“24”
}, {
姓名:“丽莎”,
年龄:"46"
}];
angular.forEach($scope.people,function(value,key){
$scope.agebrands[value.age]=$scope.agebrands[value.age]+1 | | 1;
});
$scope.addPerson=函数(){
var age=Math.floor(Math.random()*(123-1+1))+1;//在1和123之间随机
$scope.people.push({
名称:'Person'+($scope.people.length+1),
年龄:年龄
});
$scope.agebrands[age]=$scope.agebrands[age]+1 | | 1;
};
$scope.ageBracketCount=函数(最小值、最大值){
max=max | | Number.max|u SAFE|u整数;
返回$scope.age括号.filter(函数(值、索引、数组){

返回索引>=最小值和索引注释,Angular 1.3及更高版本中可使用别名
as
。注意,Angular 1.3及更高版本中可使用别名
as
<ul>
    <li ng-repeat="item in people | filter:filterFunction as results"></li>
</ul>
<p>{{results.length}}</p>

function filterFunction(item) {
    return item.age > 18 && item.age <= 25;
}