我有一组测试分数,其值范围为 10 到 990。我想将每个分数置于特定范围内。
这是我使用的脚本:
function between(x, min, max) {
return (x >= min && x <= max);
}
var overallScore = 960;
if(between(overallScore, 905, 990)) {
var output = "905 - 990";
}
if(between(overallScore, 785, 900)) {
var output = "785 - 900";
}
if(between(overallScore, 605, 780)) {
var output = "605 - 780";
}
if(between(overallScore, 405, 600)) {
var output = "405 - 600";
}
if(between(overallScore, 255, 400)) {
var output = "255 - 400";
}
if(between(overallScore, 10, 250)) {
var output = "10 - 250";
}
alert(output);
只要总体得分值在 10 到 990 范围内,此方法就可以正常工作,超出此范围的值将返回“10 - 250”范围。处理这个问题的最佳方法是什么?我想过使用 switch 语句,但我不知道如何做到这一点。我非常欢迎任何意见或帮助。
最佳答案
我实际上会使用一个包含您的范围的对象,然后创建一个简单的函数来检查它们。这样就更容易维护,更容易理解。
var ranges = [
{ min: 10, max: 250},
{ min: 255, max: 400},
{ min: 405, max: 600},
{ min: 605, max: 780},
{ min: 785, max: 900},
{ min: 905, max: 990}
];
function getScoreRange(score){
var output = 'out of range'; //set to either empty or null or default value for out of range scores.
ranges.forEach(function(range){
if(score >= range.min && score <= range.max){
output = range.min + ' - ' + range.max;
}
});
return output;
};
alert(getScoreRange(960));
现在您可以轻松更改您的逻辑,添加新范围或更改它们而无需更改太多,您还可以将您的评分方法与其他范围重复使用并用于其他目的。
工作中的 JSFiddle: https://jsfiddle.net/workingClassHacker/c06pq2w0/3/
关于javascript - 如何处理超出范围的值? switch 还是 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40255612/