jquery源码--merge grep type trim

1.$.merge(arr1, arr2)

合并两个数组

var merge = function(first, second){
        var i = 0, len = +second.length, j = first.length;
        while(i < len){
            first[j++] = second[i++];
        }
        if(len !== len){//second.length 为NaN的情况
            while(second[i] !== 'undefined'){
                first[j++] = second[i++];
            }
        }
        first.length = j;
        return first;
    }

 

2.$.grep(elems, callback, invert)

 遍历数组,对每个元素执行callback,返回经过过滤剩下的元素数组集合。

invert如果没写,或者为false,则返回callback执行后为true的元素集合;如果为true,则返回callback执行后为false的元素集合。

elems为数组,callback为过滤函数,inverted为布尔值。callback参数为数组元素、索引。

var grep = function(elems, callback, invert){
        var len = elems.length,
            matches = [],
            callbackExpect = !invert;
        for(var i = 0; i < len; i++){
            var callbackInverse = !callback(elems[i], i);
            if(callbackExpect !== callbackInverse){
                matches.push(elems[i]);
            }
        }
        return matches;
    };

 

3.$.type  返回参数的数据类型

var class2Type = {};
    $.each("Boolean Number String Function Array Date RegExp Object Error".split(' '), function(i, name){
        class2Type['[object ' + name + ']'] = name.toLowerCase();
    });
    var type = function(obj){
        if(obj == null){
            return obj + '';
        }
        return (typeof obj === 'object' || typeof obj == 'function') ?
            class2Type[class2Type.toString.call(obj)] || 'object' :
            typeof obj;
    }

 

 4.$.trim 去除开头和结尾的空格

var reg = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;    
//\uFEFF是位序掩码,<BOM>,虽然不是很理解,先记下来了。。
//\xA0是&nbsp这个东东,我也不清楚为什么是这个码
var trim = function(text){
    return (text == null) ? "" :
     (text+'').replace(reg,"");
}

 

posted @ 2014-07-23 17:36  前端小蜗牛  阅读(293)  评论(0编辑  收藏  举报