
[英]Javascript 2nd condition not working, calculate average then change to letter grade
[英]debug javascript code to calculate average then assign letter grade
我正在尝试计算dbase表中var 1的平均值和var 2的平均值。 我也想给平均分指定一个字母等级。 我的脚本假装它正在运行,甚至在输出中指定字母等级,但计算不正确。 你能帮我调试吗?
var correspondence = "FDCBAA"; // last A is for a perfect 5
var courtesyVal = 0, overallVal = 0;
if (data.length) {
for (var i = 0; i < data.length; i++) {
courtesyVal += data[i].grade_courtesy;
overallVal += data[i].grade_overall;
}
courtesyVal = (courtesyVal / data.length);
overallVal = (overallVal / data.length);
}
courtesyVal = correspondence[Math.floor(courtesyVal)];
overallVal = correspondence[Math.floor(overallVal)];
if (courtesyVal >= 4 || overallVal >= 4) {
courtesyVal = "A";
overallVal = "A";
}
else if (courtesyVal >= 3 || overallVal >= 3) {
courtesyVal = "B";
overallVal = "B";
}
else if (courtesyVal >= 2 || overallVal >= 2) {
courtesyVal = "C";
overallVal = "C";
}
else if (courtesyVal >= 1 || overallVal >= 1) {
courtesyVal = "D";
overallVal = "D";
}
else {
courtesyVal = "F";
overallVal = "F";
}
Appery("courtesy_grade").text(courtesyVal);
Appery("overall_grade").text(overallVal);
看来问题在于您的台词:
courtesyVal = correspondence[Math.floor(courtesyVal)];
overallVal = correspondence[Math.floor(overallVal)];
将字符串值分配给变量courtesyVal
和overallVal
。
可以,但是在这些行下面,您检查这些值是否等于0到5之间的数字。要解决此问题,您可以将上述2行更改为:
courtesyVal = Math.floor(courtesyVal);
overallVal = Math.floor(overallVal);
或者你可以摆脱所有的if语句的,因为你的方式设置courtesyVal
和overallVal
正确地得到'correspondence'
值。
这是一些示例数据和第二个选项的小提琴: 单击此处 。
如果这不是您想要的,我很乐意再试一次!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.