Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将您的分数与jQuery中的三个范围进行比较的最短方法_Javascript_Jquery_If Statement - Fatal编程技术网

Javascript 将您的分数与jQuery中的三个范围进行比较的最短方法

Javascript 将您的分数与jQuery中的三个范围进行比较的最短方法,javascript,jquery,if-statement,Javascript,Jquery,If Statement,我有以下代码: function display_message() { var low = data.result[0].max; //returns 30 var medium = data.result[1].max; // returns 60 var high = data.result[2].max; // returns 100 // mypoints are 67 for example if(mypoints > low) {

我有以下代码:

function display_message() {
    var low = data.result[0].max; //returns 30
    var medium = data.result[1].max; // returns 60
    var high = data.result[2].max; // returns 100

    // mypoints are 67 for example
    if(mypoints > low) {
        if(mypoints > medium) {
            alert('You got a high score');
        } else {
            alert('You got a medium score');
        }
    } else {
        alert('You got a low score');
    }
}
这段代码运行良好。我将我的平均分数与标准的低/中/高分进行比较

低分:
0-30分

中等分:
31-60分

高分:
61-100分

我的问题是如何让我的代码更漂亮一点?我不确定该守则是否清晰有效


如果您有任何意见,我们将不胜感激,谢谢

您可以创建一个函数,该函数将分数和数组作为具有不同级别及其名称的参数
{“score”:30,“text”:“you got a low score”}
,然后循环该函数并输出与您发送的内容最接近的内容,并返回匹配的文本

例如:

var myScore = 50,
    scoreIntervals = [{
            "score": 30,
            "text": "Low score"
        },{
            "score": 60,
            "text": "Average score"
        },{
            "score": 100,
            "text": "High score"
        }];

function evaluateScore(score, scoreIntervals) {
    var output = scoreIntervals[scoreIntervals.length - 1].text;
    $.each(scoreIntervals, function(key, val) {
        if(score <= val.score) {
            output = val.text;
            return false;
        }
    });
    return output;
}

console.log(evaluateScore(myScore, scoreIntervals));
var myScore=50,
得分间隔=[{
“得分”:30分,
“文本”:“低分”
},{
“分数”:60分,
“文本”:“平均分数”
},{
“分数”:100分,
“文本”:“高分”
}];
函数evaluateScore(分数、分数间隔){
变量输出=ScoreInterval[ScoreInterval.length-1]。文本;
$.each(分数间隔、函数(键、值){

如果(得分不需要低的if-else,只需从最小值到最高值进行检查

if (mypoints <= low) {
  //low msg
} else if (mypoints <= medium) {
  //medium msg
} else {
  //high msg
}

if(mypoints可以使用没有嵌套条件的条件

if (mypoints > medium) {
    alert('You got a high score');
} else if (mypoints > low) {
    alert('You got a medium score');
} else {
    alert('You got a low score');
}
mypoints
您可以使用
开关
语句

function display_message() {
    var low = data.result[0].max; //returns 30
    var medium = data.result[1].max; // returns 60
    var high = data.result[2].max; // returns 100

    switch (true) {
      case mypoints > medium:
        alert('You got a high score');
        break;
      case mypoints > low:
        alert('You got a medium score');
        break;
      default:
        alert('You got a low score');
    }   
} 

在这里,我们迭代组成分数范围的各种值。循环将依次迭代每个分数范围,这意味着您需要首先获得最低分数,最后获得最高分数。然后,我们将分数名称保存在
myscore
中,以便在以后发出警报

此方法允许扩展性——可以在中间添加多个得分范围,而不必再添加任何I/EL块。

let data={result:[{max:30},{max:60},{max:100}]},
mypoints=67;
功能显示_消息(){
让分数_范围={
low:data.result[0].max,//返回30
medium:data.result[1].max,//返回60
高:data.result[2]。max//返回100
},
myscore='fail';
for(分数范围内的var分数){
if(分数范围hasOwnProperty(分数)){
如果(我的分数>分数范围[分数]){
myscore=分数;
}
}
}
警惕('你得到了'+myscore+'分数!');
}

display_message();
您可以将消息存储在一个数组中,并找到正确的索引,如下所示:

功能显示\信息(){
var低=30,
中等=60,
等级
mypoints=67;//例如
排名=[‘低’、‘中’、‘高’][+(我的分数>低)++(我的分数>中)];
log('你得到了'+rank+'分数');
}

显示消息()使用三元条件Hello@Halcyon,我在写问题的时候犯了一个错误。除了中/高混淆之外,固定的三元条件是最短路径的最佳选择。我看不出我会在这段代码中做任何更改。可能会用一个
消息
变量调用
警报
一次。这段代码大概很清楚获取。用于多个比较的三元运算符变得非常混乱。我投票将这个问题作为离题来结束,因为它可能更适合;检查以确保您的帖子在主题上。
function display_message() {
    var low = data.result[0].max; //returns 30
    var medium = data.result[1].max; // returns 60
    var high = data.result[2].max; // returns 100

    switch (true) {
      case mypoints > medium:
        alert('You got a high score');
        break;
      case mypoints > low:
        alert('You got a medium score');
        break;
      default:
        alert('You got a low score');
    }   
}