如何在JavaScript中检查字符串数组是否包含一个字符串?

如何在JavaScript中检查字符串数组是否包含一个字符串?,javascript,arrays,string,testing,Javascript,Arrays,String,Testing,我有一个字符串数组和一个字符串。我想根据数组值测试这个字符串,并对结果应用一个条件-如果数组包含字符串do“a”,否则就执行“B” 如何执行此操作?所有数组都有一个方法(Internet Explorer 8及以下版本除外),该方法将返回数组中某个元素的索引,如果该元素不在数组中,则返回-1: if (yourArray.indexOf("someString") > -1) { //In the array! } else { //Not in the array }

我有一个字符串数组和一个字符串。我想根据数组值测试这个字符串,并对结果应用一个条件-如果数组包含字符串do“a”,否则就执行“B”

如何执行此操作?

所有数组都有一个方法(Internet Explorer 8及以下版本除外),该方法将返回数组中某个元素的索引,如果该元素不在数组中,则返回-1:

if (yourArray.indexOf("someString") > -1) {
    //In the array!
} else {
    //Not in the array
}

如果您需要支持旧的IE浏览器,可以使用中的代码填充此方法。

这将为您提供:

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle)
            return true;
    }
    return false;
}
功能inArray(针、草垛){
var length=haystack.length;
对于(变量i=0;i

我在堆栈溢出问题中找到了它。

您可以使用
indexOf
方法,并使用
包含的
方法“扩展”数组类,如下所示:

Array.prototype.contains = function(element){
    return this.indexOf(element) > -1;
};
结果如下:

[“A”、“B”、“C]”。包含(“A”)
等于
true


[“A”、“B”、“C]”。包含(“D”)
等于
false

创建此函数原型:

Array.prototype.contains = function ( needle ) {
   for (i in this) {
      if (this[i] == needle) return true;
   }
   return false;
}
然后可以使用以下代码在数组x中搜索

if (x.contains('searchedString')) {
    // do a
}
else
{
      // do b
}

检查:indexOf遍历数组并逐个比较!当这个问题是一大堆其他问题的翻版时,它怎么还没有结束呢,你重新发明了由现代浏览器支持的indexOf…这在IE9之前是不受IE支持的-包括我在内的很多人都必须为IE8开发(不幸的是,大多数时候IE7也是如此)。不可否认,创建indexOf函数的原型方法是一个更好的解决方案,可以解决我所读到的效率不高的代码。这是一个糟糕的做法。如果你真的想让它包含你最好用indexOfGood的答案来包装它,但是值得一提的是在使用indexOf时老IE版本的兼容性问题。没有人关心IE,即使是微软:D@andygoestohollywood可悲的是,有些公司仍然使用IE。仅仅因为有些公司处于石器时代,并不意味着你应该放弃9%的市场。@AlexFallenstedt是的,不。Internet Explorer是一种经验证的安全威胁,与现代web技术不兼容。如果一家公司花得起X美元来使用你的web应用程序,那么他们花得起0美元来安装Firefox或其他没有后门的东西。如果他们出于愚蠢的原因不这么做,就在标价上加上$Y,然后用NW.js或Electron打包你的应用程序。@SkylarIttner许多跨国公司在其内部网中使用IE。为什么?当年,一个内部开发团队决定让内部网在一个浏览器上工作。我工作的公司就是这样。他们选择了IE。今天,这家拥有216000名员工的世界性公司正在统计。企业遗留系统是如此相互关联,以至于进行任何更改都需要大量的时间和金钱。对于一些组织来说,仅仅为了让员工停止抱怨IE,几乎不可能做到这一点。对他们来说,IE没有商业价值,也永远不会有商业价值。有没有更好的方法来做到这一点,巴贝尔ES2017?这种方法可行,但看起来有点误用。我建议使用
includes
func,这正是作者所要求的。下面是一个示例:['A','B'].包括('A')/>>true['A','B'].包括('C')/>false@StanislauBaranouski-真的<代码>包含()
在2020年及以后会更好。
if (x.contains('searchedString')) {
    // do a
}
else
{
      // do b
}