Javascript 将所有项添加到数组的If条件
我在angular应用程序中有一个用户列表,我想做的就是用Javascript 将所有项添加到数组的If条件,javascript,html,angularjs,arrays,Javascript,Html,Angularjs,Arrays,我在angular应用程序中有一个用户列表,我想做的就是用if条件过滤用户,如果用户的age>45将其推送到validForScheme数组中,但它正在推送数组中的所有用户。我不知道出了什么问题 另一件事是ng repeat显示一个额外的空白项 注意:我正在使用http方法从数据库获取$scope.alluser var-app=angular.module('myApp',[]); 应用程序控制器('myCtrl',函数($scope){ $scope.allUsers=[{“年龄”:54,
if
条件过滤用户,如果用户的age>45
将其推送到validForScheme
数组中,但它正在推送数组中的所有用户。我不知道出了什么问题
另一件事是ng repeat
显示一个额外的空白项
注意:我正在使用http
方法从数据库获取$scope.alluser
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.allUsers=[{“年龄”:54,“姓名”:“科琳·本森”},{“年龄”:38,“姓名”:“汤普森·牛顿”},{“年龄”:62,“姓名”:“莫莉·古德”},{“年龄”:66,“姓名”:“克里斯汀·麦克布莱德”},{“年龄”:45,“姓名”:“凯西·埃斯特拉达”},{“年龄”:22,“姓名”:“克里斯托·戴维斯”},{“年龄”:53,“姓名”:“巴特勒·格林”},{“年龄”:34,“姓名”:“霍根·约瑟夫”};
$scope.validForScheme=[];
$scope.filterUsers=函数(arg){
如果(参数年龄>45)
log(arg.name,‘对方案有效’);
$scope.validForScheme.push(arg);
}
$scope.allUsers.forEach(功能(项目、索引){
$scope.filterUsers(项目);
})
console.log($scope.validForScheme);
});代码>
{{users.name},{{{users.age}}
validForScheme=allUsers.filter(user=>user.age>45)
您需要将if
语句的内容括在括号{}
中
当不包含在大括号内时,if
只考虑一行(立即)语句作为其范围
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.alluser=[{
“年龄”:54岁,
“姓名”:“Corrine Benson”
}, {
“年龄”:38岁,
“姓名”:“汤普森·牛顿”
}, {
“年龄”:62岁,
“姓名”:“莫莉·古德”
}, {
“年龄”:66岁,
“姓名”:“克里斯汀·麦克布莱德”
}, {
“年龄”:45岁,
“姓名”:“凯西·埃斯特拉达”
}, {
“年龄”:22岁,
“姓名”:“克里斯托·戴维斯”
}, {
“年龄”:53岁,
“姓名”:“巴特勒·格林”
}, {
“年龄”:34岁,
“姓名”:“霍根·约瑟夫”
}];
$scope.validForScheme=[];
$scope.filterUsers=函数(arg){
如果(参数年龄>45){
log(arg.name,‘对方案有效’);
$scope.validForScheme.push(arg);
}
}
$scope.allUsers.forEach(功能(项目、索引){
$scope.filterUsers(项目);
})
console.log($scope.validForScheme);
});代码>
{{users.name},{{{users.age}
只需使用数组。直接过滤即可。像这样:
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.allUsers=[{“年龄”:54,“姓名”:“科琳·本森”},{“年龄”:38,“姓名”:“汤普森·牛顿”},{“年龄”:62,“姓名”:“莫莉·古德”},{“年龄”:66,“姓名”:“克里斯汀·麦克布莱德”},{“年龄”:45,“姓名”:“凯西·埃斯特拉达”},{“年龄”:22,“姓名”:“克里斯托·戴维斯”},{“年龄”:53,“姓名”:“巴特勒·格林”},{“年龄”:34,“姓名”:“霍根·约瑟夫”};
$scope.validForScheme=$scope.allUsers.filter(函数(项,索引){
返回项目。年龄>45
})
console.log($scope.validForScheme);
});代码>
{{users.name},{{{users.age}
如果使用{}
将多个语句括在中
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.allUsers=[{“年龄”:54,“姓名”:“科琳·本森”},{“年龄”:38,“姓名”:“汤普森·牛顿”},{“年龄”:62,“姓名”:“莫莉·古德”},{“年龄”:66,“姓名”:“克里斯汀·麦克布莱德”},{“年龄”:45,“姓名”:“凯西·埃斯特拉达”},{“年龄”:22,“姓名”:“克里斯托·戴维斯”},{“年龄”:53,“姓名”:“巴特勒·格林”},{“年龄”:34,“姓名”:“霍根·约瑟夫”};
$scope.validForScheme=[];
$scope.filterUsers=函数(arg){
如果(参数年龄>45){
//log(arg.name,‘对方案有效’);
$scope.validForScheme.push(arg);
}
}
$scope.allUsers.forEach(功能(项目、索引){
//console.log(项目)
$scope.filterUsers(项目);
})
//console.log($scope.validForScheme);
});代码>
{{users.name},{{{users.age}
如果语句缺少括号
$scope.filterUsers = function (arg) {
if (arg.age > 45) {
console.log(arg.name, 'is valid for Scheme');
$scope.validForScheme.push(arg);
}
}
工作代码
{{users.name},{{{users.age}
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.alluser=[{
“年龄”:54岁,
“姓名”:“Corrine Benson”
}, {
“年龄”:38岁,
“姓名”:“汤普森·牛顿”
}, {
“年龄”:62岁,
“姓名”:“莫莉·古德”
}, {
“年龄”:66岁,
“姓名”:“克里斯汀·麦克布莱德”
}, {
“年龄”:45岁,
“姓名”:“凯西·埃斯特拉达”
}, {
“年龄”:22岁,
“姓名”:“克里斯托·戴维斯”
}, {
“年龄”:53岁,
“姓名”:“巴特勒·格林”
}, {
“年龄”:34岁,
“姓名”:“霍根·约瑟夫”
}];
$scope.validForScheme=[];
$scope.filterUsers=函数(arg){
如果(参数年龄>45){
log(arg.name,‘对方案有效’);
$scope.validForScheme.push(arg);
}
}
$scope.allUsers.forEach(功能(项目、索引){
$scope.filterUsers(项目);
})
console.log($scope.validForScheme);
});
要实现更简单、更清晰、更可靠的实现,请仅使用阵列过滤器:
$scope.allUsers = [{"age": 54,"name": "Corrine Benson"},{"age": 38,"name": "Thompson Newton"},{"age": 62,"name": "Molly Good"},{"age": 66,"name": "Kristine Mcbride"},{"age": 45,"name": "Kathy Estrada"},{"age": 22,"name": "Krystal Davis"},{"age": 53,"name": "Butler Greene"},{"age": 34,"name": "Hogan Joseph"}];
$scope.validForScheme = $scope.allUsers.filter(user => user.age > 45);
您错过了if条件后的括号,这就是为什么immediate console.log被计算为条件语句,而不是$scope.validForScheme.push(arg)代码>$scope.validForScheme.push(arg)代码>首