代码之家  ›  专栏  ›  技术社区  ›  Egidi

过滤对象的子阵列

  •  0
  • Egidi  · 技术社区  · 9 年前

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

    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 回复  |  直到 9 年前
        1
  •  3
  •   tymeJV    9 年前

    classes students 都是数组-因此您也必须循环这些数组:

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