繁体   English   中英

调试javascript代码以计算平均值,然后指定字母等级

[英]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)];

将字符串值分配给变量courtesyValoverallVal

可以,但是在这些行下面,您检查这些值是否等于0到5之间的数字。要解决此问题,您可以将上述2行更改为:

courtesyVal = Math.floor(courtesyVal);
overallVal = Math.floor(overallVal);

或者你可以摆脱所有的if语句的,因为你的方式设置courtesyValoverallVal正确地得到'correspondence'值。

这是一些示例数据和第二个选项的小提琴: 单击此处

如果这不是您想要的,我很乐意再试一次!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM