如何查找数组是否包含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); }