262

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

我怎样才能做到这一点?

4

5 回答 5

463

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

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

如果你需要支持旧的 IE 浏览器,你可以使用MDN 文章中的代码 polyfill 这个方法。

于 2012-09-27T14:06:54.877 回答
65

您可以使用该indexOf方法并使用以下方法“扩展” Array 类contains

Array.prototype.contains = function(element){
    return this.indexOf(element) > -1;
};

结果如下:

["A", "B", "C"].contains("A")等于true

["A", "B", "C"].contains("D")等于false

于 2012-09-27T14:10:15.867 回答
30
var stringArray = ["String1", "String2", "String3"];

return (stringArray.indexOf(searchStr) > -1)
于 2012-09-27T14:08:32.300 回答
9

创建这个函数原型:

Array.prototype.contains = function ( needle ) {
   for (var i in this) { // Loop through every item in array
      if (this[i] == needle) return true; // return true if current item == needle
   }
   return false;
}

然后您可以使用以下代码在数组 x 中搜索

if (x.contains('searchedString')) {
    // do a
}
else
{
      // do b
}
于 2012-09-27T14:11:08.223 回答
5

这将为您完成:

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle)
            return true;
    }
    return false;
}

我在与 PHP 的 in_array() 等效的 Stack Overflow 问题 JavaScript中找到了它。

于 2012-09-27T14:07:16.840 回答