类似的东西:
if (mystring == "a" || mystring == "b" || mystring =="c")
我一直在努力:
if (mystring in ("a", "b", "c"))
有可能吗?
答案 0 :(得分:21)
你可以像这样使用indexOf()
if ( [ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
编辑 ES7有点简化。截至今天,只有Chrome 47+和FF 43+似乎支持它:
if ( [ 'a', 'b', 'c' ].includes( mystring ) ) { ... }
答案 1 :(得分:5)
使用indexOf是我想到的第一件事,但是你必须记住,旧版IE中没有.indexOf
功能(所以你必须使用你的自定义代码模拟它,或直接使用jQuery.inArray或underscore.js indexOf)。
if ([ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
旁注:正如您在jQuery源代码中查看inArray定义所看到的那样,编写自己的indexOf替换非常简单。就像我说的那样 - 编写自己的方法,从其他库中复制粘贴,或者如果你想在每个浏览器中使用indexOf,只需使用这些库。
答案 2 :(得分:4)
你可以用旧方式做到这一点
a = "a";
b = ["a","b","c","d"];
function check(a,b){
i = 0;
for (i=0;i<b.length;i++) {
if (a === b[i]) {
return true;
}
}
return false;
}
alert(check (a,b))
请注意indexOf is a recent addition to the ECMA-262 standard; as such it may not be present in all browsers如果你打算在IE上使用它,它只适用于版本9或更高版本
答案 3 :(得分:1)
您可以使用indexOf
[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1
因此,您可以检查indexOf是否返回-1。
类似于字符串。
答案 4 :(得分:1)
我认为是这样的:
if (["a", "b", "c"].indexOf(mystring) != -1) {
// do something
}
答案 5 :(得分:1)
if (["a", "b", "c"].indexOf(mystring) != -1) {}
这将是最好的方式,但它可能无法在某些浏览器上运行。
答案 6 :(得分:0)
像
这样的东西foreach (str in strings) {
if (mystring.contains(str)) {
...
}
}
可能会有效。
答案 7 :(得分:0)
您的版本是三个字符中最快的版本,且最具可读性。
使用更多可能的值,您可以使用以下内容:
var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {
但这主要是为了好玩......
答案 8 :(得分:0)
Addtionally:您可以为比较创建一个String扩展名:
String.prototype.in = function(){
return ~[].slice.call(arguments).indexOf(this.valueOf()) ? true : false;
}
//usage
var myStr = 'a';
myStr.in('a','b','c'); //=> true
'd'.in('a','b','c'); //=> false
对于旧版浏览器:此MDN page包含Array.indexOf