js判断是否在数组中

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;
}
打赏

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of

扫码在手机查看
iPhone请用自带相机扫
安卓用UC/QQ浏览器扫

js判断是否在数组中