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');
}
}