使用if语句过滤具有多个字符串值的数据

时间:2019-04-15 11:47:12

标签: javascript

使用If语句过滤具有多个字符串值的数据

我想在一行中对文件扩展名进行排序,因为如果不这样做,我必须编写多行代码,我认为这是浪费时间。我可以在这里得到一些帮助

if (fileExtension === "jpg"||"Jpeg"||"png"||"svg"){
//do something 
}
else{
//do something else
}

如果文件扩展名为jpg,则直接切换到else语句;如果我仅给出jpg,即if (fileExtension === "jpg"),则代码运行良好,我想使用多个。

6 个答案:

答案 0 :(得分:5)

"jpg"||"Jpeg"||"png"||"svg"是一个表达式,其计算结果为第一个真实值。 "jpg"是第一个真实值,因此整个表达式变为"jpg"。参见Short-circuit evaluation

您可以将所有值存储在数组中,然后在数组上使用some()并将其与fileExtension进行比较

"Jpeg"可能会引起一些问题。大写J。我建议您将所有值更改为小写,然后在some()

中进行比较

let fileExtension = "svg"

if (["jpg","jpeg","png","svg"].some(x => fileExtension.toLowerCase() === x)){
  console.log("found")
}
else{
  cosnole.log("not found")
}

注意:在这种情况下,您也可以使用includes()。但是我更喜欢some(),因为它允许用户比较多个条件

答案 1 :(得分:3)

其他所有人都在使用数组,因此下面是使用正则表达式[1] [2]的示例:

function testExtension(fileExtension) {
  if (/jpg|jpeg|png|svg/.test(fileExtension.toLowerCase())) {
    console.log(`${fileExtension} found`);
  } else {
    console.log(`${fileExtension} not found`); 
  }
}

testExtension('mpg');
testExtension('jpg');
testExtension('svg');

答案 2 :(得分:0)

if (fileExtension === "jpg"|| fileExtension ==="Jpeg" || fileExtension ==="png" || fileExtension ==="svg"){
//do something 
}
else{
//do something else
}

您应该使用fileExtension检查每个字符串。

答案 3 :(得分:0)

包含可以解决您的问题。

if (["jpg", "Jpeg", "png", "svg"].includes(fileExtension)) {
   //do something 
} else{
   //do something else
}

答案 4 :(得分:0)

您可以使用includes数组原型:

if (['jpg', 'Jpeg', 'png', 'svg'].includes(fileExtension)) {
    ...
}

您也可以将其添加到LowerCase(),以使其更加安全:

if (['jpg', 'jpeg', 'png', 'svg'].includes(fileExtension.toLower​Case())) {
    ...
}

作为另一种(但可读性更差)的OR条件:

if (fileExtension === 'jpg' || fileExtension === 'Jpeg' 
    || fileExtension === 'png' || fileExtension ==='svg'){

如您所见,它的可读性较差,带有更多参数。

答案 5 :(得分:0)

使用.indexOf()返回项目位置,如果该项目不存在,则返回-1

if(["jpg","jpeg","png","svg"].indexOf(fileExtension) > -1){
//do something...
}

使用.filter()

的另一种方法
if(["jpg","jpeg","png","Svg"].filter(function(i){return i.toLowerCase() === fileExtension.toLowerCase()}).length == 1){
    //do something...
    }