map
方法创建一个新数组,其结果是该数组中的每个元素是执行一次提供的函数后的返回值。
语法:
var new_array = arr.map(callback(item[, index[, array]]))
说明
arr:原数组
callback:提供的要执行的函数
item:当前元素
index:当前索引
array:原数组
new_array:返回的数组
下面实现代码:
Array.prototype.myMap=function(callback){
//如果没有传入回调函数,则报错
if(!callback) throw new TypeError('undefined is not a function');
if (typeof callback !== 'function') {//传入的不是函数也报错
throw new TypeError(callback + " is not a function");
}
var res=[];//定义返回数组
for(var i=0,len=this.length;i<len;i++){
res.push(callback(this[i],i,this));//将函数的返回值添加到返回数组
}
return res;//返回结果
}
测试一下:
var arr = [1,3,5,7,9]
var res=arr.myMap(function(item,index,thisArr){
return item*2
});
console.log(res);
输出:
(5) [2, 6, 10, 14, 18]