Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 基于年份范围过滤对象_Javascript_Angularjs_Filter - Fatal编程技术网

Javascript 基于年份范围过滤对象

Javascript 基于年份范围过滤对象,javascript,angularjs,filter,Javascript,Angularjs,Filter,我想筛选某个年份范围内的对象 我拥有的对象如下所示: students = [ {studentId: 1, studentName: 'Alex', studentClass: 1, studentBirth: 1345262400000}, {studentId: 2, studentName: 'Bob', student

我想筛选某个年份范围内的对象

我拥有的对象如下所示:

students = [ {studentId: 1, 
              studentName: 'Alex',
              studentClass: 1,
              studentBirth: 1345262400000},

             {studentId: 2,
              studentName: 'Bob',
              studentClass: 1,
              studentBirth: 1345608000000},
              ...
             ];
var targetStudent = {};
targetStudent['studentClass'] = 1;
students = $filter('filter')(students, targetStudent);
我想找一些出生年份>1994年和出生年份<2000年的学生。另外,我想根据学生的班级缩小范围

我编写了如下代码:

students = [ {studentId: 1, 
              studentName: 'Alex',
              studentClass: 1,
              studentBirth: 1345262400000},

             {studentId: 2,
              studentName: 'Bob',
              studentClass: 1,
              studentBirth: 1345608000000},
              ...
             ];
var targetStudent = {};
targetStudent['studentClass'] = 1;
students = $filter('filter')(students, targetStudent);
通过上面的代码,我可以找到班级为1的学生,但我不知道如何根据年级进行筛选

我可以这样写:

students = $filter('filter')(students, function(student) {
    if(new Date(student.studentBirth).getFullYear() < 2000 && new Date(student.studentBirth).getFullYear() > 1994)
        return true;
    else
        return false;
});
student=$filter('filter')(学生,函数(学生){
if(新日期(student.studentBirth).getFullYear()<2000和新日期(student.studentBirth.getFullYear()>1994)
返回true;
其他的
返回false;
});

但我想创建一个对象来查找学生。有可能吗?

事实上,你已经非常接近回答自己的问题了。使用自定义筛选函数时,您可以返回对象,并将返回一个对象数组

students = $filter('filter')(students, function(student) {
    if(new Date(student.studentBirth).getFullYear() < 2000 && new Date(student.studentBirth).getFullYear() > 1994) {
        return student;
    }
});
可以在模板中使用:
{{students | studentFilter:{studentClass:1,fromYear:1994,toYear:2000}}

或在控制器/指令内:

var targetStudent = {
    studentClass: 1,
    fromYear: 1994,
    toYear: 2000
};

students = $filter('studentFilter')(students, targetStudent);

谢谢你的回复。但是我可以通过创建另一个对象来查找对象吗?(即我的第一个代码)不,不可能单独使用对象来实现您想要的。需要自定义函数表达式或自定义比较器。