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

21

3
你的例子有误,你正在赋值而不是比较。 - epascarello
我不是在谈论数组@DanielA.White,我知道我可以将字符串添加到一个数组中,但我相信有其他方法可以做到无需使用。 - Diego
var strings = [ 'js', 'java', 'css', 'html' ]; var search = 'java'; var checkindex = -1; if ( strings.indexOf( search ) > checkindex) { console.log('available at position : '+strings.indexOf( search )); } else { console.log('not available') }或者var search = 'java'; switch(search) { case 'js': case 'java': case 'html': console.log('available'); break; default: console.log('not - available'); break; } - Yash
9个回答

24
你可以像这样使用 indexOf()
if ( [ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }

编辑 随着ES7的到来,有了一些简化。截至今日,只有Chrome 47+和FF 43+支持它:

if ( [ 'a', 'b', 'c' ].includes( mystring ) ) { ... }

谢谢,这似乎是最简单的方法。 - Diego
谢谢!Sirko先生 - Jeancarlo Fontalvo

5

使用indexOf是首先想到的方法,但是你需要记住,在旧版本的IE中没有.indexOf函数(所以你需要使用自定义代码来模拟它,或者直接使用像jQuery.inArrayunderscore.js indexOf这样的工具)。

if ([ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }

顺便提一句:通过查看 jQuery 源代码中的 inArray 定义,可以看出编写自己的 indexOf 替代方法非常容易。所以像我之前说的那样 - 编写您自己的方法,从其他库中复制粘贴它,或者如果您想要在所有浏览器中使用 indexOf,则只需使用这些库。


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是ECMA-262标准的最新补充,因此它可能不适用于所有浏览器。如果您要在IE中使用它,只有9或以上版本才能正常工作。

1
你可以使用 indexOf
[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1

所以,您可以检查indexOf是否返回-1。

对于字符串也是类似的。


1
我认为应该是这样的:
if (["a", "b", "c"].indexOf(mystring) != -1) {
    // do something
}

1
if (["a", "b", "c"].indexOf(mystring) != -1) {}

这可能是最好的方法,但在某些浏览器上可能无法正常工作。


0
此外,您可以为比较创建一个字符串扩展:
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 的 shim。


0

你的版本是三个字符中最快的,也是最易读的。

如果有更多可能的值,你可以使用类似这样的代码:

var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {

但那主要是为了好玩...


-1

类似于

foreach (str in strings) { 
    if (mystring.contains(str)) { 
        ... 
    } 
}

可能能够工作。


不包含?这不是一个函数。 - Mohamed El Mahallawy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接