实现map函数
经常会在面试过程中被问及是不是能自己实现map函数,所以记下来方面以后查看.
````
function mapSelf(){
let ary = this;
let [fn,thisAry] = [].slice.call(arguments);
let result = [];
if(String.toString.call(ary) !== '[object Array]'){
throw new Error('this is not array')
}
if(typeof fn !== 'function'){
throw new Error(fn+'is not a function')
}
for(let i=0,length=ary.length;){
result.push(fn.call(thisAry,ary[i],i))
}
return result
}
````
在方法的实现上也能看出来map函数其实无法被return中断,因为数组的循环是在函数内部进行的.
其实同样的道理我们也可以实现filter函数.这儿就不写了.