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