如何将字符串与多个值进行比较?

Die*_*ego 19 javascript

可能重复:
JavaScript中的array.contains(obj)

就像是:

if (mystring == "a" || mystring == "b" || mystring =="c")
Run Code Online (Sandbox Code Playgroud)

我正在跳来做:

if (mystring in ("a", "b", "c"))
Run Code Online (Sandbox Code Playgroud)

可能吗?

Sir*_*rko 22

你可以使用indexOf()这样的

if ( [ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
Run Code Online (Sandbox Code Playgroud)

编辑使用ES7进行了一些简化.截至今天,只有Chrome 47+和FF 43+似乎支持它:

if ( [ 'a', 'b', 'c' ].includes( mystring ) ) { ... }
Run Code Online (Sandbox Code Playgroud)


WTK*_*WTK 5

使用indexOf是我想到的第一件事,但是你必须记住,旧的IE中没有任何.indexOf功能(所以你必须使用自定义代码来模拟它,或者直接使用jQuery.inArrayunderscore.js indexOf).

if ([ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
Run Code Online (Sandbox Code Playgroud)

旁注:正如您在jQuery源代码中查看inArray定义所看到的那样,编写自己的indexOf替换非常简单.就像我说的那样 - 编写自己的方法,从其他库中复制粘贴,或者如果你想在每个浏览器中使用indexOf,只需使用这些库.