把这个当作我的对象数组-学生
[
{
studentName: 'Vishesh Kumar',
dateOfBirth: '14-03-2023',
parentName: 'Lalu Kumar',
examName: 'UPSC CDS',
dateOfExam: '14-03-1998',
centerName: 'St Annas High School',
centerCode: 'RN1001',
studentEmail: 'Visheshkumar@Gmail.in',
studentPhoneNumber: 999043139,
address: 'D-31,Sectory-73,Noida Up India',
city: 'Noida',
state: 'UTTAR PRADESH',
zipcode: 201301
},
{
studentEnrollmentID: 'EN1000006',
studentName: 'Arnav Singh',
dateOfBirth: '14-03-2023',
parentName: 'Arun Singh',
examName: 'UPSC CDS',
dateOfExam: '14-03-1998',
centerName: 'St Annas High School',
centerCode: 'RN1001',
studentEmail: 'ArnavSingh@Gmail.in',
studentPhoneNumber: 6990433540,
address: 'D-31,Sectory-44,Noida Up India',
city: 'Noida',
state: 'UTTAR PRADESH',
zipcode: 201301
},
{
studentEnrollmentID: 'EN1000004',
studentName: 'Sanjay Singh',
dateOfBirth: '14-03-2023',
parentName: 'Mohan Singh',
examName: 'UPSC CDS',
dateOfExam: '14-03-1998',
centerName: 'St Peters High School',
centerCode: 'RN1003',
studentEmail: 'SanjaySingh@Gmail.in',
StudentPhoneNumber: 9990433538,
address: 'D-31,Sectory-53,Noida Up India',
city: 'Noida',
state: 'UTTAR PRADESH',
zipcode: 201301
}
]
现在将centerNames[]和centerCodes[]数组的元素与上述学生的学生对象中的属性进行比较
const centerNames = ['St Annas High School', 'KV Music School']
const centerCodes = ['RN1001','RN1002']
代码应返回两个数组,第一个数组包含与两个数组元素都匹配的学生对象,第二个数组包含与一个或两个数组都不匹配的学生对象
我现有的代码看起来像if和else在for循环中运行的循环,如果数组大小增加,这就不理想了
for (student of students) {
if (student.examCode == examCode) {
const newStudent = await new Student(student);
await newStudent.save().then(async (result: any) => {
studentsUploaded.push(result);
}).catch(async (error: any) => {
studentsRejected.push(newStudent);
errors.push(error);
});
} else {
studentsRejected.push(student);
errors.push(`${examCode} does not match`);
}
}
1条答案
按热度按时间qco9c6ql1#
尝试:
关于复杂性:
时间复杂度为O(2(n * k * h)),其中n是students数组的长度,k和h是centerNames和centerCodes的长度。考虑k和h常数,总复杂度为O(n),这是遍历所有students数组所需的最小复杂度