在程序员编程的过程中经常会有遍历数组的需要,.foreach和.map都具有遍历的作用,那么他们的共同点和区别是什么呢?我们来分析一下.
一、共同点
1.都只能遍历数组。
2. 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项)、index(索引值)、arr(原数组),forEach 和 map都相当于封装好的单层for循环,三个值都相同。
3. 匿名函数中的this都是指向window。
4.都是循环遍历数组中的每一项
二、不同点
1. map()会分配内存空间存储新数组并返回,.forEach()不会返回数据。
例:
输入m是"undefined"
换成.map的话
输出结果是原数组
2. .forEach()改变原数组,map()返回新数组,原数组不变
例:
原来的数组就变成了
如是使用.map则数组不变.
原理解释:
forEach遍历通常都是直接引入当前遍历数组的内存地址,生成的数组的值发生变化,当前遍历的数组对应的值也会发生变化。
而map遍历后的数组通常都是生成一个新的数组,新的数组的值发生变化,当前遍历的数组值不会变化。
三、使用场景的不同
在分析了二者的相同与不同之处之后,我们就可以分析二者使用场景的不同。
由于forEach会改变数组,因此适用于不打算改变数据的时候,例如我们需要使用数组进行比较而不是进行改变的时候。
map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)。
标签:map,遍历,区别,forEach,数组,使用,foreach From: https://www.cnblogs.com/AllenPan/p/17020694.html