jQuery.extend({
map: function(elems, fn) {
if ( fn.constructor == String )
fn = new Function("a","return " + fn);
var result = [];
for ( var i = 0; i < elems.length; i++ ) {
var val = fn(elems[i],i);
if ( val !== null && val != undefined ) {
if ( val.constructor != Array ) val = [val];
result = jQuery.merge( result, val );
}
}
return result;
},
})
map:n. 地图;天体图;示意图,分布图;染色体图;(非正式)面孔 v. 绘制地图;了解信息;计划;映现;映射;与……有关;确定基因在染色体中的位置 n. (Map) (美)马普(人名) 这里的elems还是必须要是类数组对象或者数组对象 map函数是生成一个数组对象[],里面保存的是fn返回的属性值,定义了fn的第一个参数为elems的属性值,第二个参数为属性名(0,1,2,3,4),而且这个函数要有返回值,把返回值添加到新数组中,就是把fn的返回值包装成新的数组对象 jQuery.map(elems,fn)就是把elems的子对象映射到新数组对象,fn(elems[i],i)执行函数的参数关联elems的属性值elems[i]和属性i
merge: function(first, second) {
var result = [];
for ( var k = 0; k < first.length; k++ )
result[k] = first[k];
for ( var i = 0; i < second.length; i++ ) {
var noCollision = true;
for ( var j = 0; j < first.length; j++ )
if ( second[i] == first[j] )
noCollision = false;
if ( noCollision )
result.push( second[i] );
}
return result;
}
merge:合并 融合 merge函数是合并两个对象,这两个对象要是类数组对象或者数组对象,就是对象的键是0,1,2,3 例如{0:1,2:2,3:3,length:3} [1,2,3,4] 1:先把first对象的属性值添加到result 新数组中, 2:然后遍历,用fisrt里每一个属性值和second的所有属性值进行比较,当first里的属性值和second的属性值相同,就不添加, 3:当first的属性值和second的属性值不同,就添加 总结:就是把fisrt的属性值添加到新数组中,然后把first和second的不同属性值添加到新数组,最后形成first合并second的属性值的新数组 用第一个对象去合并第二个对象,去掉第二个和第一个相同的属性值
|