1.给定一个提交对象数组,当我向 findUnsubscribed 函数提供日期、学生姓名数组和提交对象数组时,我会返回一个尚未完成任何测验的学生姓名数组那个日期。
当我 console.log 我的 findUnsubscribed 函数时,我只是返回: [ 'Kevin', 'Nivek', 'John' ] ...在这种情况下,我应该只返回数组中的 Kevin 和 John ...
const submissions = [
{
quizName: "Quiz 1",
quizModule: "Math",
quizScore: 100,
studentId: 001,
studentName: "Kevin",
submissionDate: "March 24, 2022"
},
{
quizName: "Essay",
quizModule: "English",
quizScore: 0,
studentId: 023,
studentName: "Nivek",
submissionDate: "April 1, 2022"
},
{
quizName: "Quiz 2",
quizModule: "Science",
quizScore: 71.59485,
studentId:023,
studentName: "John",
submissionDate: "May 24, 2022"
}
]
const filterByDate = (particularDate, submission) => {
return submission.filter((sub) => sub.submissionDate === particularDate)
}
const findUnsubmitted = (particularDate, names, submission) => {
const date = filterByDate(particularDate, submission);
const unsubmitted = names;
for(let i = names.length - 1; i >=0; i--) {
const student = date[i];
if(student == names.studentName){
submissions.splice(i, 1);
}
return unsubmitted;
}
}
console.log(findUnsubmitted('April 1, 2022', ['Kevin', 'Nivek', 'John'], submissions));
如果您只想返回当天未完成任何测验的学生姓名数组。别把事情搞复杂了
在函数中:
findUnsubmitted
不需要使用names
变量。
更改函数中的代码
filterByDate
,例如:
const filterByDate = (particularDate, submission) => {
return submission.filter((sub) => sub.submissionDate !== particularDate)
}
和功能
findUnsubmitted
:
const findUnsubmitted = (particularDate, submission) => {
const date = filterByDate(particularDate, submission);
if (!date) return [];
return date.map(item => item.studentName);
}
希望对您有帮助。
您的代码中的问题是条件
if(student == names.studentName)
不正确。 names
是一个数组,您应该与 names[i]
而不是 names.studentName
进行比较。另外,您应该使用 ===
来实现严格相等。
您正在循环内返回
unsubmitted
,这意味着循环将在第一次迭代后终止,并返回重新提交到循环外
<script>
const submissions = [
{
quizName: "Quiz 1",
quizModule: "Math",
quizScore: 100,
studentId: 001,
studentName: "Kevin",
submissionDate: "March 24, 2022"
},
{
quizName: "Essay",
quizModule: "English",
quizScore: 0,
studentId: 023,
studentName: "Nivek",
submissionDate: "April 1, 2022"
},
{
quizName: "Quiz 2",
quizModule: "Science",
quizScore: 71.59485,
studentId: 023,
studentName: "John",
submissionDate: "May 24, 2022"
}
];
const filterByDate = (particularDate, submission) => {
return submission.filter((sub) => sub.submissionDate === particularDate);
}
const findUnsubmitted = (particularDate, names, submission) => {
const date = filterByDate(particularDate, submission);
const unsubmitted = [];
for (let i = 0; i < names.length; i++) {
const studentName = names[i];
// Check if the student has a submission on the given date
const submitted = date.some(sub => sub.studentName === studentName);
// If not submitted, add to unsubmitted array
if (!submitted) {
unsubmitted.push(studentName);
}
}
return unsubmitted;
}
console.log(findUnsubmitted('April 1, 2022', ['Kevin', 'Nivek', 'John'], submissions));
</script>