我有以下代码:
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 points
中等分数:31-60 points
高分:61-100 points
我的问题是如何使我的代码更漂亮?我不确定代码是否清晰有效。
非常感谢任何意见,谢谢
答案 0 :(得分:3)
不需要if else,只需检查从最小到最高。
if (mypoints <= low) {
//low msg
} else if (mypoints <= medium) {
//medium msg
} else {
//high msg
}
或者您可以朝相反的方向前进并检查最高的第一个是否大于
答案 1 :(得分:1)
您可以使用没有嵌套条件的条件。
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');
}
答案 2 :(得分:1)
在这里,我们迭代构成得分范围的各种值。循环将遍历每个得分范围依次,这意味着您需要获得最低分数,最高得分。然后,我们将分数名称保存为myscore
,以便稍后提醒。
这种方法允许扩展 - 您可以在中间添加任意数量的得分范围,而无需再添加if / else块。
let data = {result: [{max: 30}, {max: 60}, {max: 100}]},
mypoints = 67;
function display_message() {
let score_range = {
low: data.result[0].max, //returns 30
medium: data.result[1].max, // returns 60
high: data.result[2].max // returns 100
},
myscore = 'fail';
for (var score in score_range) {
if (score_range.hasOwnProperty(score)) {
if (mypoints > score_range[score]) {
myscore = score;
}
}
}
alert('You got a ' + myscore + ' score!');
}
display_message();
答案 3 :(得分:1)
您可以将消息存储在数组中,并找到正确的索引,如下所示:
[CV] clf__max_depth=10, clf__learning_rate=0.01, clf__n_estimators=500 -119.5min
[CV] clf__max_depth=10, clf__learning_rate=0.01, clf__n_estimators=500 -119.8min
魔法在一元加运算符中,它将比较返回的布尔值相应地转换为0或1。如果需要,还可以轻松添加更多排名。
答案 4 :(得分:0)
mypoints < low ? alert("you get low score") : (mypoints < medium ? alert("you get medium score") : alert("you get high score"))
答案 5 :(得分:0)
您可以使用switch
声明
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');
}
}
答案 6 :(得分:-1)
您可以创建一个函数,将得分和数组作为参数,使用不同的级别及其名称{"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));