map和forEach的区别

forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,兼容在IE9一可能会有问题。具体可以百度一下。

forEach
1.不能通过break来中止循环,只能通过 try catch抛出异常 才可以实现循环。
2.遍历数组,循环体内没有返回值,也就是说forEach会改变原来的数组
3.forEach()返回值是undefined,不可以链式调用。
4.
使用场景:并不打算改变数据的时候,而只是想用数据做一些事情 ,比如存入数据库或则打印出来。

map
1.map会返回新数组,而不会改变新数组。
2.执行速度大于forEach
使用场景:map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。

两者的相同点:
1.都是循环遍历数组中的每一项
2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
3.匿名函数中的this都是指向window
4.只能遍历数组

原文地址:https://www.cnblogs.com/axingya/p/13637702.html