- map和forEach的区别?
forEach(): 针对每一个元素执行提供的函数(executes a provided function once for each array element)。
map(): 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来(creates a new array with the results of calling a provided function on every element in the calling array)。
区别:
forEach()返回值是undefined,不可以链式调用;map()返回新的数组,可以链式调用(arr.map(item=>item*2).filter(item=>item>5))
没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some(); 自己实现map函数
1
2
3
4
5
6
7function myMap(fn){
var newArr = [];
for(let i=0;i<this.length;i++){
newArr.push(fn(this[i],i,this))
}
return newArr;
}函数防抖与函数截流
延伸:自定义实现数组中的方法
1
2
3
4
5
6//实现forEach
function myForEach(fn){
for(let i=0;i<this.length;i++){
fn(this[i],i,this)
}
}