先举个常见的栗子:
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]