阅读:2837回复:0
JS的forEach和map方法的区别
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。 |
|