小编给大家分享一下JS中地图和ForEach的差异是什么,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法:<代码> Array.prototype.map() 代码>和<代码> Array.prototype.forEach()。代码>那么,它们到底有什么区别呢?
<强>定义强>
我们首先来看一看MDN上对地图和ForEach的定义:
- <李> <代码> ForEach() 代码>:针对每一个元素执行提供的函数(执行一个函数提供> <强>示例强>
下方提供了一个数组,如果我们想将其中的每一个元素翻倍,我们可以使用地图<代码> 代码>和<代码> ForEach> 代码来达到目的。
让arr=[1、2、3、4、5),
<强> ForEach 强>
注意,ForEach是不会返回有意义的值的。
我们在回调函数中直接修改arr <代码> 代码>的值。
加勒比海盗。forEach ((num、索引)=比;{ 返回arr(指数)=num * 2;} );
执行结果如下:
//arr=(2、4、6、8、10]
<强>地图强>
=arr让翻了一番。地图(num=比;{ 返回num * 2; });
执行结果如下:
=//翻了一番(2、4、6、8、10]
<强> jsPref 强>是一个非常好的网站用来比较不同的JavaScript函数的执行速度。
这里是<代码> forEach() 代码>和<代码> map() 代码>的测试结果:
可以看的到,在我到电脑上<代码> forEach() 代码>的执行速度比<代码> map() 代码>慢了70%。每个人的浏览器的执行结果会不一样。你可以使用下面的链接来测试一下:地图和forEach - jsPref。
如果你习惯使用函数是编程,那么肯定喜欢使用<代码> map()> 代码。因为<代码> forEach() 代码>会改变原始的数组的值,而<代码> map() 代码>会返回一个全新的数组,原本的数组不受到影响。
取决于你想要做什么。
<代码> forEach 代码>适合于你并不打算改变数据的时候,而只是想用数据做一些事情,比如存入数据库或则打印出来。
让arr=[& # 39;一个# 39;& # 39;b # 39;, & # 39; c # 39;, & # 39; d # 39;]; arr.forEach((信)=比;{ console.log(信); });//一个//b//c//d
<代码> map() 代码>适用于你要改变数据值的时候,不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(成分)(map()、过滤器(),减少()等组合使用)来玩出更多的花样。
让arr=[1、2、3、4、5); 让arr2=加勒比海盗。地图(num=比;num * 2) .filter (num=比;num祝辞5);//arr2=(6、8、10)
我们首先使用地图将每一个元素乘以2,然后紧接着筛选出那些大于5的元素。最终结果赋值给<代码> arr2> 代码。
<李>能用<代码> forEach() 代码>做的到的,<代码> map() 代码>同样可以。反过来也是如此。李> <李> <代码> map() 代码>会分配内存空间存储新数组并返回,<代码> forEach() 代码>不会返回数据。李> <李> <代码> forEach() 代码>允许<代码>调> 代码更改原始数组的元素。<代码>地图()代码>返回新的数组。李>
看完了这篇文章,相信你对JS中地图和forEach的差异是什么有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!