js判断是否在数组中
我们知道php有个函数叫in_array()
,可以判断给定的元素在不在这个数组中,而js/jQuery都是没有这个方法的,那么我们怎样实现这样的功能呢?没有这个方法,我们就自己创造一个,往Array
对象的prototype原型对象里添加一个in_array()
方法,在方法里用for循环来判断:
Array.prototype.in_array = function(needle)
{
for(i=0; i<this.length; i++)
{
if(this[i] == needle)
return true;
}
return false;
}
例:我要做一个整个页面任何地方被点击都会冒出表情气泡的特效,但要排除以下元素被点击不能有这个特效,否则影响操作:
var excludeBubbleEle= ['A', 'INPUT', 'SELECT', 'OPTION', 'RADIO', 'CHECKBOX', 'LABEL', 'TEXTAREA'];
$(document).on('click', function(e){
if(!excludeBubbleEle.in_array(e.target.tagName)){
//do someing here...
}
});
其实后来因为要判断元素的类名是否在数组中,而获取的类名又可能有多个类名,所以在里面加了个判断,增加了一下:
/**
* 模拟php的in_array用于检查元素是否在数组中功能
* @param needle
* @returns {boolean}
*/
Array.prototype.in_array = function(needle)
{
for(i=0; i<this.length; i++)
{
//如果类名有空格,说明多个类名
if(needle!==undefined && needle.indexOf(' ') > -1){
var tmpArr = needle.split(' ');
for (j=0; j < tmpArr.length; j++) {
//递归调用自己
if(this.in_array(tmpArr[i])){
return true;
}
}
}
if(this[i] == needle){
return true;
}
}
return false;
}
觉得文章对你有用的话鼓励一下我吧