封装map方法

map特性:
1.参数一为回调函数,回调函数里面有三个参数,数组元素,下标和数组,参数二为回调函数的this指向。默认this指向全局。
2.对稀缺数组跳过空元素,不进行处理。
3.返回新数组。

// map拥有两个参数,第一个是回调函数,第二个是this指向
function selfMap(fn, context) {
    // 拿到数组
    let arr = Array.prototype.slice.call(this)
    // 创建一个新的空数组进行存储
    let mapArr = []
    // 遍历数组
    for(let i = 0; i < arr.length; i ++) {
        // 排除稀疏数组,可以理解为数组也是对象,下标就是属性
        if(!arr.hasOwnProperty(i)) {
            continue
        }
        mapArr.push(fn.call(context, arr[i], i, this))
    }
    return mapArr
}

也可以使用reduce

function selfMap(fn, context) {
    let arr = Array.prototype.slice.call(this)
    return arr.reduce((pre, cur, index) => {
        return [...pre, cur.call(context, cur, index, this)]
    }, [])
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容