如何缩短if if语句

时间:2013-12-16 17:12:22

标签: javascript if-statement

我试图找出如何简化可能的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');
}

等...

寻找更有活力的东西。

7 个答案:

答案 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);

应该足够了。