Способ выбора текстовой метки на основе числового результата?
Я часто сталкиваюсь с проблемой сообщения результатов викторины. Javascript дает мне хорошие способы для получения объективной оценки (например, 10 из 20 правильных ответов), но я не уверен, что лучше всего предоставить субъективную метку этого результата. Например, "Вы набрали 10 из 20 правильных ответов, это средний результат".
На сегодняшний день я делаю это простым способом:
if (score > 15) {
answerText = "excellent";
} else if (score > 10) {
answerText = "average";
} else if (score > 5) {
answerText = "below average";
} else {
answerText = "poor";
}
Интересно, хотя, есть ли лучший способ приблизиться к этому. Это switch
Скажите лучше?
Советы и мнения приветствуются!
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;
}
}