Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 使用JS是否有多个if-else条件的简写?_Javascript_If Statement - Fatal编程技术网

Javascript 使用JS是否有多个if-else条件的简写?

Javascript 使用JS是否有多个if-else条件的简写?,javascript,if-statement,Javascript,If Statement,是否有一种较短的方法来实现多个if-else条件 if( suffix != 'jpg' && suffix != 'jpeg' && suffix != 'png' && suffix != 'gif'){ console.log('not an image.'); } 使用数组可以看作是一种简写,尽管它确实增加了(可以忽略不计的IMHO)开销: if (['jpg', 'jpeg', 'png', 'gif'].indexOf(s

是否有一种较短的方法来实现多个if-else条件

if( suffix != 'jpg' && suffix != 'jpeg' && suffix != 'png' && suffix != 'gif'){

    console.log('not an image.');

}

使用数组可以看作是一种简写,尽管它确实增加了(可以忽略不计的IMHO)开销:

if (['jpg', 'jpeg', 'png', 'gif'].indexOf(suffix) === -1) {
  console.log('not an image.');
}
编辑:使用RegExp更简短:

if (!/jpe?g|png|gif/.test(suffix)) {
  console.log('not an image.');
}
您可以使用具有in或hasOwnProperty的ojbect,而不是具有indexOf的数组:


如果您可以将对象用于其他用途,则对象方法可以很好地工作。

可能不短,但适用于所有case语句爱好者:

switch(suffix){
   case 'jpg':
   case 'jpeg':
   case 'png':
   case 'gif':
       break;
   default:
       console.log('not an image.');
       break;
}

我喜欢最上面的那一个,但是中的
的反面是什么呢,因为我认为你把它弄反了;)
out
不起作用。没有
out
,你必须否定条件:
如果(!suffix in…
@Greg我试过
如果(!suffix in{jpg:'',jpeg:'',png:'',gif:'')但是没有骰子。
!suffix in
否定后缀的真实状态,你需要
如果(!(…in…)
if ({jpg:'', jpeg:'', png:'', gif:''}.hasOwnProperty(suffix))
switch(suffix){
   case 'jpg':
   case 'jpeg':
   case 'png':
   case 'gif':
       break;
   default:
       console.log('not an image.');
       break;
}