过滤对象的子数组
Filtering subarray of objects
我需要过滤元素的子数组。
var university = {
"fax": "123345",
"email": "test@test.com",
"url": "www.test.com",
"classes": [
{
"number": "1",
"name": "maths",
"students": [
{
"name": "Max",
"exams": [
{
"date": "2016-01-04T18:32:43.000Z",
"passed": false
},
{
"date": "2016-01-04T18:32:43.000Z",
"passed": true
},
{
"date": "2016-01-04T18:32:43.000Z",
"passed": false
},
{
"date": "2016-01-04T18:32:43.000Z",
"passed": true
}
]
},
{...}
]
},
{...}
]
}
好的,我需要在不过滤的情况下获取所有 classes,在不过滤的情况下获取每个 class 的所有学生,但是在 exams 数组中我只需要获取通过的那些。
我尝试了以下方法:
university.classes.students.exams.filter(function (el) {
return el.passed
});
但是没用...
我已经用谷歌搜索了一个解决方案,但没有成功...任何帮助将不胜感激。
classes
和 students
是数组 - 所以你也必须循环它们:
university.classes.forEach(function(uniClass) {
uniClass.students.forEach(function(student) {
student.exams = student.exams.filter(function (el) {
return el.passed;
});
});
});
我需要过滤元素的子数组。
var university = {
"fax": "123345",
"email": "test@test.com",
"url": "www.test.com",
"classes": [
{
"number": "1",
"name": "maths",
"students": [
{
"name": "Max",
"exams": [
{
"date": "2016-01-04T18:32:43.000Z",
"passed": false
},
{
"date": "2016-01-04T18:32:43.000Z",
"passed": true
},
{
"date": "2016-01-04T18:32:43.000Z",
"passed": false
},
{
"date": "2016-01-04T18:32:43.000Z",
"passed": true
}
]
},
{...}
]
},
{...}
]
}
好的,我需要在不过滤的情况下获取所有 classes,在不过滤的情况下获取每个 class 的所有学生,但是在 exams 数组中我只需要获取通过的那些。
我尝试了以下方法:
university.classes.students.exams.filter(function (el) {
return el.passed
});
但是没用...
我已经用谷歌搜索了一个解决方案,但没有成功...任何帮助将不胜感激。
classes
和 students
是数组 - 所以你也必须循环它们:
university.classes.forEach(function(uniClass) {
uniClass.students.forEach(function(student) {
student.exams = student.exams.filter(function (el) {
return el.passed;
});
});
});