我试图找出如何简化可能的if if else语句。
可以选择8种可能性,每个选项1-8我想显示一条消息。
例如,这是有效的,但我知道写得更好:
if(this.cv == '1'){
console.log('Greater Then 1');
} else
if(this.cv == '2'){
console.log('Greater Than 2');
}
等...
寻找更有活力的东西。
答案 0 :(得分:6)
使用地图:
var messages = {
'1' : 'Greater than 1',
'2' : 'Greater than 2',
....etc
}
console.log(messages[this.cv]);
答案 1 :(得分:2)
使用switch语句:
switch(this.cv)
{
case '1':
console.log('Greater Than 1');
break;
case '2':
console.log('Greater Than 2');
break;
default:
//executed if no matches are found
}
根据adeneo的回答,地图也可以正常工作,因为这实际上是如何实现switch语句。两者都是压缩几个if语句的好选择。
答案 2 :(得分:1)
您可以使用switch语句,请查看此链接for more details
SWITCH的一般语法:
switch (expression) {
case label1:
statements1
[break;]
case label2:
statements2
[break;]
...
case labelN:
statementsN
[break;]
default:
statements_def
[break;]
}
在你的情况下:
switch(this.cv) {
case '1':
console.log("Greater than 1");
break;
case '2':
console.log("Greater than 2");
break;
}
答案 3 :(得分:1)
这就是switch
声明的内容。
switch(this.cv) {
case '1':
console.log("Greater than 1");
break;
case '2':
console.log("Greater than 2");
break;
}
您甚至可以添加“全能”默认操作:
default:
console.log("I don't know what to do with "+this.cv);
答案 4 :(得分:1)
switch(n)
{
case '1':
execute code block 1
break;
case '2':
execute code block 2
break;
default:
code to be executed if n is different from case 1 and 2
}
答案 5 :(得分:1)
我想创建一个对象,将可能的值映射到消息,并简单地从地图中检索消息,如下所示:
var messages = {'1': 'Greater Then 1',
'2': 'Greater Than 2'};
console.log(messages[this.cv]);
答案 6 :(得分:1)
有时候我有很多函数可以添加到各种变量中。
在这种情况下,我更喜欢使用类似的东西。 我用答案创建一个对象。然后我检查答案是否存在并执行它。 我更喜欢开关
var a={'2':'greater than 2','1':'greater than 1'}
console.log(a[this.cv]?a[this.cv]:'')
另一种写这个的方法是
var a={'2':'greater than 2','1':'greater than 1'}
!a[this.cv]||(console.log(a[this.cv]));
或者如果你只是做一个简短的检查我使用javascript速记。
console.log('Greater then '+(a=this.cv,a==1)?1:(a==2)?2:'whatever');
或
console.log('Greater then '+(this.cv==1?1:2));
在您的情况下是
console.log('Greater than '+this.cv);
应该足够了。