基于数值结果选择文本标签的方法?

时间:2014-01-03 16:55:09

标签: javascript scoring

我发现自己经常面临报告测验结果的问题。 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声明更好吗?

建议和意见赞赏!

1 个答案:

答案 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;
    }
}