Javascript 使用JS是否有多个if-else条件的简写?
是否有一种较短的方法来实现多个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( 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;
}