我发现自己经常面临报告测验结果的问题。 Javascript为我提供了产生客观分数的好方法(例如,20个正确答案中的10个),但我不确定提供该结果的主观标签的最佳方法。例如,“你得到20个正确答案中的10个,这是一个平均结果。”
到目前为止,我一直在这样做:
if (score > 15) {
answerText = "excellent";
} else if (score > 10) {
answerText = "average";
} else if (score > 5) {
answerText = "below average";
} else {
answerText = "poor";
}
我想知道,如果有更好的方法来解决这个问题。 switch
声明更好吗?
建议和意见赞赏!
答案 0 :(得分:1)
这是一个非常好的方法来解决这个问题。您也可以使用反向switch
语句,但除了可能的新颖效果之外,它不提供任何其他内容:
switch (true) {
case score > 15:
answerText = "excellent";
break;
case score > 10:
answerText = "average";
break;
// etc
}
如果你想要更有纪律和可维护的东西,你可以创建一个阈值数组,并按降序检查它们中的每一个,例如:
// This could also be an array of objects, but let's keep the PoC simple
var outcomes = [
[15, "excellent"],
[10, "average"],
// ...
[0, "poor"]
];
for (var i = 0; i < outcomes.length; ++i) {
if (outcomes[i][0] <= score) {
answerText = outcomes[i][1];
break;
}
}