我有一组来自两种不同评分系统的学生。
First评分系统 One评分系统定义为1-5年级,其中3级及以上意味着您通过了课程。
二级系统其他等级系统的A级、A-级、B级、B级、C级、C级,其中A级为最高等级,C级为最低及格级。
给定以下数组allStudents表示所有学生及其成绩的任务,我将尝试构建一个新的数组studentsWhoPass,其中包含所有通过考试的学生。
设allStudents = 'A','B-',1,4,5,2
设studentsWhoPass = [];
我已经尝试过的
let allStudents = [
'A',
'B-',
1,
4,
5,
2
]
let studentsWhoPass = [];
for (let i = 0; i < allStudents.length; i++) {
if (allStudents >= 'A' && allStudents > 3) {
return studentsWhoPass.push(allStudents);
}
}
任何帮助都将不胜感激。
发布于 2022-01-13 13:31:52
几个问题
循环中的
之外使用它。
访问该项
,
这里我用isNaN测试字母(不是数字)
它传递所有字母> C-和所有数字>= 3
const allStudents = [ 'A','A-','B-',1,4,5,2 ];
const getPassingStudents = () => allStudents
.filter(student => {
if (isNaN(student))
return "ABC".includes(student.slice(0,1)) && student != "C-";
return student > 3;
});
console.log(
getPassingStudents()
)
发布于 2022-01-13 13:37:27
let allStudents = [
'A',
'B-',
1,
4,
5,
2
]
let studentsWhoPass = [];
for (let i = 0; i < allStudents.length; i++) {
if (allStudents[i] == 'A' || allStudents[i] == 'B' || allStudents[i] == 'C' || allStudents[i] == 'A-' || allStudents[i] == 'B-' || allStudents[i] > 3) {
studentsWhoPass.push(allStudents[i]);
}
}
console.log(studentsWhoPass);
备注:-
studentsWhoPass.push(allStudents[i]);
&&(和)运算符,而是||(或)运算符,这样每个元素的每个条件都不必为真,但至少有一个条件应为true。
我想这会解决你的问题,谢谢!
发布于 2022-01-13 13:42:57
我建议创建一张每个年级的地图以及相应的分数,然后使用Array.filter()很容易地过滤3分或以上的学生
let allStudents = [ 'A', 'B-', 1, 4, 5, 2, 'C-' ]
// One can customize as necessary..
let gradeMap = { 'A': 7, 'A-': 6, 'B': 5, 'B-': 4, 'C': 3, 'C-': 2};
const passingScore = 3;
function studentPassed(input) {
return (gradeMap[input] || input) >= passingScore;
}
let studentsWhoPass = allStudents.filter(studentPassed)
console.log('Passing students:', studentsWhoPass).as-console-wrapper { max-height: 100% !important; top: 0; }
https://stackoverflow.com/questions/70697304
复制相似问题