Попытка отфильтровать учащихся по значению вложенного свойства.В основном каждый объект учащегося имеет свойство типа array: studentSuperSubject
, которое, в свою очередь, также имеет массив как свойство: studentSubSubjectOrSkill
subjects
- это массив объектов в следующей форме: {superSubject: "some super subject name", subSubject: "some sub subject name"}
.каждый subSubject
внутри studentSubSubjectOrSkill
имеет свойство studentSubSubjectScore
, которое я ищу.Я хочу перебрать массив студентов для каждого предмета в subjects
и создать и объект, который я затем сохраню в другом массиве - grades=[]
Мне удается это сделать с помощью чего-то похожего на Хью-ору спагеттиcode:
for (let subject of subjects) {
var grades = [];
this.data.students.filter(student => {
let name = student.studentName;
// loop over each student > superSubject > subSubject
for (let superSubject of student.studentSuperSubject) {
if (superSubject.superSubjectName === subject.superSubject) {
superSubject.studentSubSubjectOrSkill.filter(sub => {
if (sub.subSubjectName === subject.subSubject) {
grades.push({
name: name,
pass: sub.studentSubSubjectScore > 58
});
return;
}
});
}
}
});
subject["grades"] = grades;
}
Есть идеи, как мне улучшить это, чтобы облегчить жизнь будущим разработчикам, которые собираются использовать этот код?как примечание, lodash доступен в этом проекте благодаря.