Javascript 将所有项添加到数组的If条件

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,

我在angular应用程序中有一个用户列表,我想做的就是用
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)