如何在JavaScript / jQuery中查找数组是否包含特定字符串? [重复]

问题描述

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

您真的不需要jQuery。
var myarr = [\"I\",\"like\",\"turtles\"];
var arraycontainsturtles = (myarr.indexOf(\"turtles\") > -1);
  提示:indexOf返回一个数字,表示第一次出现指定搜索值的位置;如果从不出现,则返回-1   发生 要么
function arrayContains(needle,arrhaystack)
{
    return (arrhaystack.indexOf(needle) > -1);
}
值得注意的是IE <9不支持
array.indexOf(..)
,但是jQuery \ 3ѭ函数即使在那些较旧的版本中也可以使用。     ,jQuery提供
$.inArray
: 请注意,inArray返回找到的元素的索引,因此“ 5”表示元素是数组中的第一个元素。
-1
表示未找到元素。
var categoriesPresent = [\'word\',\'word\',\'specialword\',\'word\'];
var categoriesNotPresent = [\'word\',\'word\'];

var foundPresent = $.inArray(\'specialword\',categoriesPresent) > -1;
var foundNotPresent = $.inArray(\'specialword\',categoriesNotPresent) > -1;

console.log(foundPresent,foundNotPresent); // true false
<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js\"></script>
,干得好:
$.inArray(\'specialword\',arr)
此函数返回一个正整数(给定值的数组索引),如果在数组中找不到给定值,则返回
-1
。 现场演示:http://jsfiddle.net/simevidas/5Gdfc/ 您可能想要这样使用:
if ( $.inArray(\'specialword\',arr) > -1 ) {
    // the value is in the array
}
    ,您可以使用
for
循环:
var found = false;
for (var i = 0; i < categories.length && !found; i++) {
  if (categories[i] === \"specialword\") {
    found = true;
    break;
  }
}
    ,我不喜欢
$.inArray(..)
,这是大多数理智的人都不会容忍的那种类似于jQuery的丑陋解决方案。这是向您的军械库添加简单的
contains(str)
方法的代码段:
$.fn.contains = function (target) {
  var result = null;
  $(this).each(function (index,item) {
    if (item === target) {
      result = item;
    }
  });
  return result ? result : false;
}
同样,您可以将ѭ4包裹在扩展名中:
$.fn.contains = function (target) {
  return ($.inArray(target,this) > -1);
}