就像是:
if (mystring == "a" || mystring == "b" || mystring =="c")
我想做:
if (mystring in ("a", "b", "c"))
是否可以?
就像是:
if (mystring == "a" || mystring == "b" || mystring =="c")
我想做:
if (mystring in ("a", "b", "c"))
是否可以?
你可以这样indexOf()
使用
if ( [ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
编辑使用 ES7 进行了一些简化。截至今天,只有 Chrome 47+ 和 FF 43+ 似乎支持它:
if ( [ 'a', 'b', 'c' ].includes( mystring ) ) { ... }
使用 indexOf 是首先想到的,但是您必须记住,在较旧的 IE 中没有.indexOf
功能(因此您必须使用自定义代码来模拟它,或者直接使用jQuery.inArray或underscore.js indexOf)。
if ([ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
旁注:正如您通过查看 jQuery 源代码中的 inArray 定义所看到的,编写自己的 indexOf 替换非常容易。所以就像我说的 - 编写你自己的方法,从其他库复制粘贴它,或者如果你希望能够在每个浏览器中使用 indexOf,就使用这些库。
你可以用老办法
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
[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1
因此,您可以检查 indexOf 是否返回 -1。
类似的字符串。
我认为是这样的:
if (["a", "b", "c"].indexOf(mystring) != -1) {
// do something
}
if (["a", "b", "c"].indexOf(mystring) != -1) {}
这将是最好的方法,但它可能不适用于某些浏览器。
您的版本是三个字符中最快的版本,也是最易读的版本。
使用更多可能的值,您可以使用以下内容:
var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {
但这主要是为了好玩...
另外:您可以为比较创建一个字符串扩展名:
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 页面包含用于Array.indexOf
就像是
foreach (str in strings) {
if (mystring.contains(str)) {
...
}
}
可能工作。