我怎样才能比较一个字符串与几个值?

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

就像是:

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 ) ) { ... }
  • Array.prototype.includes() MDN

  • 使用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是ECMA-262标准的新增内容; 因此它可能不会出现在所有的浏览器中如果你打算在IE中使用它,它只能用于版本9或更高版本

    链接地址: http://www.djcxy.com/p/13047.html

    上一篇: how can I compare a string with several values?

    下一篇: Find out if a variable is in an array?