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

JVG*_*JVG 11 javascript

可能重复:
Javascript:将一个值与多个值进行比较的最漂亮的方法
Javascript If用于检查文件扩展名不起作用的语句

在JS中我试图检查扩展名是否以"png""jpg"或"gif"结尾.我知道这可以通过switch语句来完成,但我想知道是否有一种更简单的方法可以将它全部放入if条件语句中.喜欢:

    if (aExtensions[i].toLowerCase() == ('jpg' || 'png' || 'gif')) {}
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

Ian*_*Ian 12

你可以使用这样的数组:

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

if (extensions.indexOf(aExtensions[i].toLowerCase()) > -1) {
    // match
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您存储"有效"扩展名.然后,您可以使用该indexOf方法Array查找数组中的任何项是否与您正在查看的特定扩展名匹配 - 检查是否为0更大的值.

indexOf旧浏览器不支持,因此您需要包含一个polyfill来备份它.有几种解决方案.

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

var ext = aExtensions[i].toLowerCase();
if (ext == "jpg" || ext == "png" || ext == "gif") {
    // match
}
Run Code Online (Sandbox Code Playgroud)

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

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

switch (ext) {
    case "jpg":
    case "png":
    case "gif":
        // match
        break;
    case default:
        // No match
}
Run Code Online (Sandbox Code Playgroud)

我不妨把它包括在内(其他答案首先是肯定的),但我能想到的还有一个正则表达式,如:

if (/jpg|png|gif/i.test(aExtensions[i])) {
    // match
}
Run Code Online (Sandbox Code Playgroud)

但请注意,您永远无法单独获得扩展,这就是为什么我更喜欢我给出的前两个选项中的一个.