用ES5实现ES6的数组方法map

先举个常见的栗子:

var arr = [1,2,3,4,6,7,8,9,12,3,25,63,100]

var arr2 = arr.map(item => item += 1)

console.log(arr)   // 原数组

console.log(arr2) // 返回一个每项加1的新数组

用ES5实现如下:

const myMap = function(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
}

Array.prototype.myMap = myMap

var arr = [1,2,3,4,5]

var arr2 = arr.myMap(item=>item += 1)

console.log(arr)  // [1,2,3,4,5]
console.log(arr2) // [2,3,4,5,6]

 

posted @ 2019-06-03 18:10  藝y  阅读(462)  评论(0)    收藏  举报