为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript if语句具有多个允许条件

Javascript if语句具有多个允许条件

慕沐林林 2020-02-02 14:13:05
在JS中,我试图检查扩展名是否以“ png”“ jpg”或“ gif”结尾。我知道这可以通过switch语句来完成,但是我想知道是否有一种更简单的方法可以将所有if条件都放入条件语句中。喜欢:    if (aExtensions[i].toLowerCase() == ('jpg' || 'png' || 'gif')) {}实现此目标的最佳方法是什么?
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您可以使用如下数组:


var extensions = ["jpg", "png", "gif"];


if (extensions.indexOf(aExtensions[i].toLowerCase()) > -1) {

    // match

}

在这种情况下,您将存储“有效”扩展名。然后,您可以使用的indexOf方法Array来查找数组中的任何项目是否与您正在查看的特定扩展名相匹配-检查值是否0大于或等于。


indexOf较旧的浏览器不支持此功能,因此您需要包括一个polyfill来对其进行备份。有几种解决方案。


当然,如果只想使用if语句,则可以使用以下格式:


var ext = aExtensions[i].toLowerCase();

if (ext == "jpg" || ext == "png" || ext == "gif") {

    // match

}

我可以想到的另一种可能性是switch声明,例如:


var ext = aExtensions[i].toLowerCase();


switch (ext) {

    case "jpg":

    case "png":

    case "gif":

        // match

        break;

    case default:

        // No match

}

我也可以包括它(其他答案肯定是第一个),但是我想到的还有一个使用正则表达式,例如:


if (/jpg|png|gif/i.test(aExtensions[i])) {

    // match

}

但是请注意,您将永远无法单独获得这些扩展,这就是为什么我希望我提供的前两个选项之一。


查看完整回答
反对 回复 2020-02-02
?
交互式爱情

TA贡献1712条经验 获得超3个赞

那么正则表达式呢?


if ( /jpg|png|gif/i.test( aExtensions[i] ) ) {

  ...

}


查看完整回答
反对 回复 2020-02-02
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

实现此目的的另一种方法是使用这样的对象文字,


if ({'jpg':1,'png':1,'gif':1}[aExtensions[i].toLowerCase()]) {

    // ...

}

这样,您就可以查看匿名对象{'jpg':1,'png':1,'gif':1}是否具有一个属性,该属性将由变为true if。1遇到这个,undefined不是。


如果您使用的是对象,则还可以使用in运算符(如Ian所指出的),该运算符给出true对象是否具有与其值无关的键。


if (aExtensions[i].toLowerCase() in {'jpg':0,'png':1,'gif':2}) {

    // ...

}

注意这次'jpg'即使仍然如何'jpg':0。


查看完整回答
反对 回复 2020-02-02
  • 3 回答
  • 0 关注
  • 1660 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信