Javascript:较短的if(…或…)条件

Javascript:较短的if(…或…)条件,javascript,Javascript,正如你所看到的,我用了两条非常相似的线来表示or。有没有较短的方法可以做到这一点?只需事先进行连接和套管: if (args.join(" ").toLowerCase() === "are you" || args.join(" ").toLowerCase() === "are you doing") 您可以使用一个变量,例如,text来保存小写值并缩短代码,还可以将join()操作减少为只执行一次 let lc = args.join(" ").toLowerCase(); if(lc

正如你所看到的,我用了两条非常相似的线来表示or。有没有较短的方法可以做到这一点?

只需事先进行连接和套管:

if (args.join(" ").toLowerCase() === "are you" || args.join(" ").toLowerCase() === "are you doing")

您可以使用一个变量,例如,
text
来保存小写值并缩短代码,还可以将
join()
操作减少为只执行一次

let lc = args.join(" ").toLowerCase();
if(lc === "are you" || lc === "are you doing"){

}
查看代码时,您需要在最高级别检查的似乎是
are
,因此您也可以使用
indexOf()
来检查文本值

var text = args.join(" ").toLowerCase();
if (text === "are you" || text === "are you doing"){
  ...
}

可读性较差,在
if
中定义的var
lc

var text = args.join(" ").toLowerCase();
if (text.indexOf("are you") !== -1){
  ...
}
您可以使用重写复杂或条件

它允许您添加任意数量的检查值,而无需重复 你自己太过分了

if(['are you','are you doing'])。一些(i=>i==='you doing')){
console.log('passs')
}
如果(['are you','are you doing'])。一些(i=>i===='are you')){
console.log('passs')

}
由于您的值是相似的/相关的,并且是字符串,所以我将使用正则表达式

功能测试(…参数){
return/you(正在做)?/.test(args.join(“”)
}
log(测试(“是”、“你”、“正在做”))
log(测试(“是”、“你”))
console.log(测试(“are”,“yo”))
此解决方案的好处是,
args.join(“”.toLowerCase()
只执行一次,而且它不冗长,同时仍然具有表达力,易于理解。

它也很容易扩展。如果要验证的字符串更多,只需将这些字符串添加到数组中。

如果要检查其中任何一个条件,则需要进行比较。这不包括
“执行”
情况。Will match
“您是否正在撤消”
这就是我提到的`您可以使用一个变量,例如,text来保存小写值,缩短代码,还可以将join()操作减少为只执行一次。var text=args.join(“”.toLowerCase();如果(text==“you”| text==“you”{…}并且查看代码,它似乎就是您需要在最高级别检查的内容,那么您也可以使用indexOf()检查文本值,就像`我没有说
使用这个
您的意思是
I===args.join(“”)。toLowerCase()
,为了让我的例子更简洁,我故意省略了这个。我喜欢这个,而不是我自己的答案。
if ((lc = args.join(" ").toLowerCase()) === "are you" || lc === "are you doing"){

}
["are you", "are you doing"].includes(args.join(" ").toLowerCase())