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

2020/09/23 07:21 · javascript ·  · 0评论

有人可以告诉我如何检测是否"specialword"出现在数组中吗?例:

categories: [
    "specialword"
    "word1"
    "word2"
]

您真的不需要jQuery。

var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);

提示:indexOf返回一个数字,表示指定的搜索值首次出现的位置;如果从不出现,则返回-1

要么

function arrayContains(needle, arrhaystack)
{
    return (arrhaystack.indexOf(needle) > -1);
}

值得注意的array.indexOf(..)IE <9不支持该indexOf(...)功能,但是jQuery的功能即使在那些较旧的版本中也可以使用。

jQuery提供$.inArray

请注意,inArray返回找到的元素的索引,因此0指示该元素是数组中的第一个元素。-1表示找不到元素。


3.5年后编辑

$.inArray实际上Array.prototype.indexOf,它是支持它的浏览器的包装器(如今几乎所有浏览器),同时为不支持它的浏览器提供了填充。从本质Array.prototype上讲,这等效于向中添加垫片,这是一种更加惯用/ JSish的处理方式。MDN提供了这样的代码这些天来,我会采用此选项,而不是使用jQuery包装器。


三年后再编辑

天哪,6.5年?!

在现代Javascript中,最好的选择是Array.prototype.includes

var found = categories.includes('specialword');

没有比较,也没有令人困惑的-1结果。它完成了我们想要的:它返回truefalse对于较旧的浏览器,可以使用MDN上的代码进行polyfillable

干得好:

$.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;
}

同样,您可以包装$.inArray扩展名:

$.fn.contains = function (target) {
  return ($.inArray(target, this) > -1);
}
本文地址:http://javascript.askforanswer.com/ruhezaijavascript-jqueryzhongchazhaoshuzushifoubaohantedingzifuchuanzhongfu.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!