现在的位置: 首页 > 综合 > 正文

jQuery源码分析5: jQuery.map

2019年10月30日 ⁄ 综合 ⁄ 共 861字 ⁄ 字号 评论关闭

jQuery源码分析5: jQuery.map

函数用途:使用jQuery.map将数组elems中的元素通过callback映射到另一个数组中

isArray: Array.isArray || function( obj ) {
    return jQuery.type(obj) === "array";
},

map: function( elems, callback, arg ) {
    var value, 
        key, 
        ret = [],
        i = 0,
        length = elems.length,
        // 判断elems 是否是数组的方法,其中jQuery对象也视为数组
        isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
 
    //< 遍历数组elems, 将每一项通过callback映射到ret数组中
    if ( isArray ) {
        for ( ; i < length; i++ ) {
            value = callback( elems[ i ], i, arg );
 
            if ( value != null ) {
                ret[ ret.length ] = value;
            }
        }
 
    //< 使用for...in遍历对象elems, 将每一个属性通过callback映射到ret数组中
    } else {
        for ( key in elems ) {
            value = callback( elems[ key ], key, arg );
 
            if ( value != null ) {
                ret[ ret.length ] = value;
            }
        }
    }
 
    // Flatten any nested arrays
    return ret.concat.apply( [], ret );
},

抱歉!评论已关闭.