如果'featured'在数组中,我希望以下if
语句提醒'是',无论它是大写还是小写。
我对正则表达式也不太熟悉,所以也许我的正则表达式错了..
var myArray = ["featured", "foo", "bar"];
if( $.inArray(/featured/i, myArray) > -1 ){
alert('yes!');
}
答案 0 :(得分:3)
我不认为$.inArray
支持正则表达式,但你可以创建自己的函数。
$.inArrayRegEx = function(regex, array, start) {
if (!array) return -1;
start = start || 0;
for (var i = start; i < array.length; i++) {
if (regex.test(array[i])) {
return i;
}
}
return -1;
};
工作演示:http://jsfiddle.net/jfriend00/H4Y9A/
您甚至可以覆盖现有的inArray以使其成为&#34;可选&#34;支持正则表达式,同时仍保留其常规功能:
(function() {
var originalInArray = $.inArray;
$.inArray = function(regex, array, start) {
if (!array) return -1;
start = start || 0;
if (Object.prototype.toString.call(regex) === "[object RegExp]") {
for (var i = start; i < array.length; i++) {
if (regex.test(array[i])) {
return i;
}
}
return -1;
} else {
return originalInArray.apply(this, arguments);
}
};
})();
工作演示:http://jsfiddle.net/jfriend00/3sK7U/
注意:使用此覆盖会丢失的一件事是能够在数组中查找正则表达式对象。
答案 1 :(得分:2)
数组不是字符串,但您可以使用toString
if(/featured/.test(myArray.toString())){
alert('yes!');
}
答案 2 :(得分:0)
不,我不这么认为。
我就是这样做的,使用($.each
和match()
):
var myArray = ["featured", "foo", "bar"];
$.each(myArray,function(index,value){
if(value.match(/featured/i) !== null){
alert("Yes!");
return false;
}
});
在JSFIDDLE上:http://jsfiddle.net/QGtZU/
答案 3 :(得分:0)
您可以使用$.grep过滤数组,然后检查长度:
if ( $.grep( myArray, function (e, i ){ return /featured/i.test(e); }).length > 0 )
alert( "YES!" );
答案 4 :(得分:0)