gpt4 book ai didi

Javascript 第二个条件不起作用,计算平均值然后更改为字母等级

转载 作者:行者123 更新时间:2023-11-30 12:50:01 24 4
gpt4 key购买 nike

几天来,我一直在努力寻找这段代码中的错误。是的,我是新手。我正在尝试计算平均值,然后将数字输出转换为字母等级。请帮忙!我的输出反射(reflect)了正在计算平均值,但只有一个条件可以生成字母等级。

var courtesyVal = 0,
overallVal = 0,
i;

if (data.length) {

for (i = 0; i < data.length; i++) {

courtesyVal += data[i].grade_courtesy;
overallVal += data[i].grade_overall;

}

courtesyVal = (courtesyVal / data.length);
overallVal = (overallVal / data.length);

}


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);

最佳答案

代码有两个问题:一个严重,一个更微妙。

严重的问题是您的语法将 overallVal 视为函数。 overallVal("A") 尝试使用第一个参数 'A' 调用 overallVal 函数。这将导致错误。

这个微妙的问题掩盖了上面的严重问题,因为您已将 'A' || 的值分配给 courtesyVal总体值(value)('A')。幸运或不幸的是,最后一部分没有被评估,所以上面提到的错误永远不会出现,'A' 被分配给 courtesyVal

解决方案

替换:

courtesyVal = ("A") || overallVal("A");

与:

courtesyVal = "A";
overallVal = "A";

想到一个问题,为什么要为两个变量分配相同的值?如果您想将数字等级转换为字母等级,那么您做错了。您应该为每个变量执行一次 if () elses 序列。

更好的方法是使用一些数学函数:

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

关于Javascript 第二个条件不起作用,计算平均值然后更改为字母等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com