过滤对象的子数组

时间:2016-01-25 18:41:27

标签: javascript arrays filter sub-array

我需要过滤元素的子数组。

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
                        }
                      ]
                },
                {...}
              ]
        },
        {...}
    ]
}

好的我需要在没有过滤的情况下获得所有课程,每个班级的所有学生都没有过滤,但在考试数组中我只需要获得通过的课程。

我尝试了以下内容:

university.classes.students.exams.filter(function (el) {
    return el.passed
});

但它不起作用......

我已经搜索了一个没有成功的解决方案......任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

classesstudents是数组 - 所以你必须循环它们:

university.classes.forEach(function(uniClass) {
   uniClass.students.forEach(function(student) {
       student.exams = student.exams.filter(function (el) {
           return el.passed;
       });
   });
});