2016-01-25 1 views
0

J'ai besoin de filtrer un sous-ensemble d'éléments.Filtrage d'un sous-ensemble d'objets

var university = { 
    "fax": "123345", 
    "email": "[email protected]", 
    "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 
         } 
         ] 
       }, 
       {...} 
       ] 
     }, 
     {...} 
    ] 
} 

Ok je dois obtenir toutes les classes sans filtrage, tous les élèves de chaque classe sans filtrage, mais dans le tableau des examens que j'ai besoin pour obtenir ceux qui sont passés.

J'ai essayé les éléments suivants:

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

Mais il ne fonctionne pas ...

J'ai googlé une solution à cela sans succès ... toute aide serait appréciée.

Répondre

3

classes et students sont des tableaux - donc vous devez boucle ceux aussi bien:

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