【发布时间】:2021-08-12 00:29:06
【问题描述】:
还是在这里学习。这个看起来很简单,已经打败了我。我设法得到了答案。但是,当我这样做时,我会从我的 if 语句中得到不止一个名字。我使用了一个新集合来删除名称数组中的重复名称。但坦率地说,这对我来说似乎很懒惰,我觉得可以做一些更好的事情。
有人可以告诉我一些我缺少的方法来更好地解决这个问题吗?我尝试了扁平化,但也没有用。感谢您的帮助!
以下是给我的指示:
创建一个函数passingStudents,它接受一组学生对象。
它应该遍历学生列表并返回平均成绩至少为 70 的所有学生姓名的数组。
function passingStudents(students) {
const names = [];
students.forEach(student => {
student.grades.forEach(grade => {
if(grade.score >= 70) {
names.push(student.name);
}
});
});
let uniqueChars = [...new Set(names)];
return uniqueChars;
}
//Uncomment the lines below to test your function:
var students = [
{
"name": "Marco",
"id": 12345,
"grades": [{"id": 0, "score": 65}, {"id": 1, "score": 75}, {"id": 2, "score": 85}]
},
{
"name": "Donna",
"id": 55555,
"grades": [{"id": 0, "score": 100}, {"id": 1, "score": 100}, {"id": 2, "score": 100}]
},
{
"name": "Jukay",
"id": 94110,
"grades": [{"id": 0, "score": 65}, {"id": 1, "score": 60}, {"id": 2, "score": 65}]
}
];
console.log(passingStudents(students)); // => [ 'Marco', 'Donna' ]
【问题讨论】:
-
Lazy 在编程中很好(甚至更可取),如果它可以工作、可维护并且不会太低效。
标签: javascript arrays foreach nested