gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
阅读:1859回复:0

JS的forEach和map方法的区别

楼主#
更多 发布于:2022-04-13 16:19
  forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的。jQuery也有一个方法$.each(),长得和forEach()有点像,功能也类似。但是从本质上还是有很大的区别的,那么我们探探究竟。



response.data.forEach((item, index) => {
     用item操作每一条数据。
})



 response.data.map((item, index) => {     用item操作每一条数据。
})
相同点:
1.都是循环遍历数组中的每一项
2.forEach和map方法里每次执行匿名函数都支持3个参数,参数分别是item(当前每一项)、index(索引值)、arr(原数组)
3.匿名函数中的this都是指向window
4.只能遍历数组


区别:
1.forEach()
   没有返回值。
2.map()
  有返回值,可以return 出来。
2.2.1、forEach()返回值是undefined,不可以链式调用。
 2.2.2、map()返回一个新数组,原数组不会改变。
 2.2.3、没有办法终止或者跳出forEach()循环,除非抛出异常,所以想执行一个数组是否满足什么条件,返回布尔值,可以用一般的for循环实现,或者用Array.every()或者Array.some();
 2.2.4、$.each()方法规定为每个匹配元素规定运行的函数,可以返回 false 可用于及早停止循环。

兼容性:
forEach()和map()是ECMA5新引入的,可能在标准的其他实现中不存在,在使用前可以要Ployfill一下。
具体网上很多吧,更多的是在ie9以下,如果你的项目无视这些,那么你可以不care。
游客


返回顶部