筛选对象的子数组

Filtering subarray of objects

本文关键字:数组 对象 筛选      更新时间:2023-09-26

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

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
});

但它不起作用...

我已经用谷歌搜索了一个解决方案,但没有成功......任何帮助将不胜感激。

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

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