javascript - JavaScript:如何通过在末尾添加 1、2、3、... 的变量值来循环?
问题描述
我是一个 JavaScript 初学者。我想计算一个程序的 15 个问题的分数。我需要什么:我将收到的值放入 JSq1、JSq2 等,然后将它们相加并除以总问题并四舍五入。我可以将所有内容放在多行中,但这看起来效率不高。我试图找出一种使用循环来获得所有相同结果的方法。
请帮忙。
谢谢
<script language = "JavaScript">
// the following may work
var JSq1 =Varq1score.getValue();
var JSq2 =Varq2score.getValue();
var JSq3 =Varq3score.getValue();
var JSq4 =Varq4score.getValue();
var JSq5 =Varq5score.getValue();
var JSq6 =Varq6score.getValue();
var JSq7 =Varq7score.getValue();
var JSq8 =Varq8score.getValue();
var JSq9 =Varq9score.getValue();
var JSq10 =Varq10score.getValue();
var JSq11 =Varq11score.getValue();
var JSq12 =Varq12score.getValue();
var JSq13 =Varq13score.getValue();
var JSq14 =Varq14score.getValue();
var JSq15 =Varq15score.getValue();
var totalScore = JSq1 + JSq2 + JSq3 + ...
var totalQuestion = 15
var finalScore = parseFloat(totalScore/totalQuestion*100).toFixed(0);
// I'd like to do the following but don't know how to specify JSq1, JSq2, etc in a loop so I don't have to repeat the lines so many times.
var totalQ = 15;
for (i = 0; i <= totalQ ; i++) {
var JSq+[i] = "Varq"+ i + "score.getValue()";
}
for (i = 0; i <= totalQ ; i++) {
var totalScore = totalScore + JSq + [i];
}
...
</script>
解决方案
all_vars
1)用所有变量构建一个对象。(这里带有对象简写属性,{ JSq1 }
将相当于{ JSq1: Varq1score.getValue() }
2)Object.values
用于获取数组中上述对象的值。
3)使用任何循环(在本例中我们使用reduce)来动态构建总分。
通过对当前代码的这些细微更改,您可以获得结果。检查以下示例代码。
var JSq1 = 3;
var JSq2 = 3;
var JSq3 = 3;
var JSq4 = 3;
var JSq5 = 3;
var JSq6 = 3;
var JSq7 = 3;
var JSq8 = 3;
var JSq9 = 3;
var JSq10 = 3;
var JSq11 = 3;
var JSq12 = 3;
var JSq13 = 3;
var JSq14 = 3;
var JSq15 = 3;
var all_vars = {
JSq1,
JSq2,
JSq3,
JSq4,
JSq5,
JSq6,
JSq7,
JSq8,
JSq9,
JSq10,
JSq11,
JSq12,
JSq13,
JSq14,
JSq15
};
var totalScore = Object.values(all_vars).reduce((sum, jsq) => sum + jsq, 0);
var totalQuestion = 15;
var finalScore = parseFloat((totalScore / totalQuestion) * 100).toFixed(0);
console.log(finalScore)
推荐阅读
- javascript - JS On form事件(提交失败)获取JSON响应错误码
- jvm - 每 2 分钟运行一次 JMAP 堆会影响 JVM 服务吗?
- python - Python AttributeError:模块'xy'没有属性'z'
- c# - 如何将pdf字节转换为图像字节
- angular - Angular 5.1 应用程序中的一个组件不会触发 canActivate 防护
- python - 在 MNIST 数据集上训练的 DC GAN 的 Frechet 初始距离
- c# - Asp.Net WebAPI Wait the Current Response Sent before Next Request Executed
- azure - 如何在 u-sql 中使用子字符串并转换为时间
- c# - 读取所有字节后 TcpListener 挂起
- excel - 使用宏时 VBA ListObject 命名规则不一致(在结尾处加下划线)