https://segmentfault.com/a/1190000013368741?utm_source=channel-hottest
forEach的执行速度更快
阅读约 6 分钟
译者按:惯用Haskell的我更爱map。
原文:JavaScript — Map vs. ForEach - What’s the difference between Map and ForEach in JavaScript?
译者:Fundebug
为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。
如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法:Array.prototype.map()和Array.prototype.forEach()。
那么,它们到底有什么区别呢?
定义
我们首先来看一看MDN上对Map和ForEach的定义:
forEach(): 针对每一个元素执行提供的函数(executes a provided function once for each array element)。
map(): 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来(creates a new array with the results of calling a provided function on every element in the calling array)。
示例
下方提供了一个数组,如果我们想将其中的每一个元素翻倍,我们可以使用map和forEach来达到目的。
letarr = [1,2,3,4,5];
ForEach
注意,forEach是不会返回有意义的值的。
我们在回调函数中直接修改arr的值。
arr.forEach((num, index) =>{returnarr[index] = num *2;});
执行结果如下:
// arr = [2, 4, 6, 8, 10]
Map
letdoubled = arr.map(num=>{returnnum *2;});
执行结果如下:
// doubled = [2, 4, 6, 8, 10]
网友评论