首页 > 解决方案 > 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>

标签: javascriptloops

解决方案


all_vars1)用所有变量构建一个对象。(这里带有对象简写属性,{ 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)


推荐阅读