如何查找数组是否包含JavaScript / jQuery中的特定string?

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

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

你真的不需要这个jQuery。

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

要么

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

值得注意的是, 在IE <9中不支持 array.indexOf(..) ,但jQuery的indexOf(...)函数即使对于那些较老的版本也是可以的。

jQuery提供$.inArray

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

 var categoriesPresent = ['word', 'word', 'specialword', 'word']; var categoriesNotPresent = ['word', '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的解决scheme,大多数理智的人是不会容忍的。 这是一个简单的contains(str)方法添加到你的阿森纳的片段:

 $.fn.contains = function (target) { var result = null; $(this).each(function (index, item) { if (item === target) { result = item; } }); return result ? result : false; } 

同样,你可以将$.inArray包装$.inArray一个扩展名:

 $.fn.contains = function (target) { return ($.inArray(target, this) > -1); }