问题描述
|
这个问题已经在这里有了答案:
解决方法
您真的不需要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);
}