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

时间:2012-10-08 12:54:31

标签: javascript

  

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

类似的东西:

if (mystring == "a" || mystring == "b" || mystring =="c")

我一直在努力:

if (mystring in ("a", "b", "c"))

有可能吗?

9 个答案:

答案 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.inArrayunderscore.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

的垫片