Javascript:缩短if(...或...)条件

时间:2018-06-15 12:03:13

标签: javascript

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

正如您所看到的,我使用两个非常相似的线条或一个案例。有没有更短的方法来做到这一点?

6 个答案:

答案 0 :(得分:10)

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

这个解决方案的好处是args.join(" ").toLowerCase()只执行一次而且它非冗长,同时仍然富有表现力且易于理解。
它也很容易扩展。如果您想要验证更多字符串,只需将这些字符串添加到数组中即可。

答案 1 :(得分:3)

您可以使用Array.some()重写复杂的OR条件。

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



if (['are you', 'are you doing'].some(i => i === 'are you doing')) {
  console.log('passes')
}

if (['are you', 'are you doing'].some(i => i === 'are you')) {
  console.log('passes')
}




答案 2 :(得分:1)

lc

中定义的可读性较低,var if
if ((lc = args.join(" ").toLowerCase()) === "are you" || lc === "are you doing"){

}

答案 3 :(得分:1)

由于你的值相似/相关并且是字符串,我会使用正则表达式

function test(...args){
    return /are you( doing)?/.test(args.join(" "))
}
  
  
  console.log(test("are", "you", "doing"))
  console.log(test("are", "you"))
  console.log(test("are", "yo"))

答案 4 :(得分:0)

事先做好连接和套管:

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

}

答案 5 :(得分:0)

您可以使用变量say @echo off setlocal EnableExtensions DisableDelayedExpansion rem // Define constants here: set "_ROOT=C:\Temp\Corporate Services" set "_NAME=Registers" set "_PREF=(REG)" rem // Enumerate immediate child directories of root directory: for /D %%A in ("%_ROOT%\*") do ( rem // Try to change into certain grand-child directory: 2> nul pushd "%%~A\%_NAME%" && ( rem // Enumerate grand-grand-child directories recursively and filter them: for /F "delims=" %%C in (' 2^> nul dir /S /B /A:D "*" ^| findstr /I /V /R /C:"\\%_PREF%[^\\]*$" ') do ( rem // Rename directories that have not yet been: ECHO ren "%%~C" "%_PREF%%%~nxC" ) rem // Return from grand-child directory: popd ) ) endlocal exit /B 来保存小写值并缩短代码,并将text操作减少为仅执行一次。

join()

查看代码似乎var text = args.join(" ").toLowerCase(); if (text === "are you" || text === "are you doing"){ ... } 是您需要在最高级别检查的内容,因此您也可以使用are you来检查该文本值仅

indexOf()