如何用两个数组运行循环并输出对应学生成绩等级?
修正后的JavaScript代码及注释
原代码的问题在于使用了嵌套for循环,每个学生会遍历所有分数,导致4×4=16次输出。我们需要让每个学生对应数组中同位置的分数,用单循环即可实现需求:
function gradeNumbers() { // 学生姓名数组,顺序与分数数组一一对应 var students = ["John", "Tyler", "Rose", "Lawrence"]; // 将分数字符串转为数字,避免字符串比较的逻辑错误 var marks = ["35", "44", "55", "66"].map(Number); // 单循环遍历,索引i同时关联学生和对应分数 for (var i = 0; i < students.length; i++) { var currentStudent = students[i]; var currentMark = marks[i]; // 根据分数区间判断等级并输出 if (currentMark < 40) { console.log(currentStudent + " got F"); } else if (currentMark < 50) { console.log(currentStudent + " got D"); } else if (currentMark < 60) { console.log(currentStudent + " got C"); } else if (currentMark < 70) { console.log(currentStudent + " got B"); } } } // 调用函数执行逻辑 gradeNumbers();
关键修正说明:
- 移除嵌套循环,通过同一索引直接匹配学生和对应分数,循环次数从16次减少到4次
- 转换分数为数字类型:原代码中字符串形式的分数会触发字符串比较(比如"100"<"40"会返回true),转为数字后才能正确进行数值判断
- 移除原代码中无意义的
return gradeNumbers语句,改为直接调用函数执行逻辑
内容的提问来源于stack exchange,提问作者Rifat
相关产品推荐
相关产品推荐

