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