HackerRank Grading Students题JS代码无法通过测试原因排查
Grading Students 题目代码报错原因分析
你的代码无法通过测试有两个核心问题,和返回值格式无关:
- 入参读取逻辑完全错误
HackerRank的JS运行环境中,gradingStudents函数只接收一个参数:就是所有待处理成绩组成的数组。你使用[...arguments]展开参数后,得到的数组只有1个元素——就是这个成绩数组本身。后续你从索引i=1开始循环,根本遍历不到任何有效成绩,所有四舍五入的逻辑完全没有执行。后续的args.shift()操作更是直接把唯一的成绩数组元素删掉了,最后返回的永远是空值。 - 返回值不符合题目要求
题目明确要求函数返回处理后的整数数组,不需要手动拼接换行符、空格或者额外的末尾换行。你注释里写的return args逻辑方向是对的,但因为前面入参读错,返回的内容从根源上就是错的,不管怎么调整返回格式都不可能通过用例。
修正后的可运行代码
function gradingStudents(grades) { const round5 = (x) => Math.ceil(x / 5) * 5; return grades.map(grade => { // 低于38分直接返回原成绩,不做进位 if (grade < 38) return grade; const nextMultiple = round5(grade); return nextMultiple - grade < 3 ? nextMultiple : grade; }) }
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

