博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中Map和ForEach的区别
阅读量:4658 次
发布时间:2019-06-09

本文共 912 字,大约阅读时间需要 3 分钟。

定义

MDN上对Map和ForEach的定义:

  • : 针对每一个元素执行提供的函数。
  • : 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来。

到底有什么区别呢?

forEach()方法不会返回执行结果,而是undefined

也就是说,forEach()会修改原来的数组。而map()方法会得到一个新的数组并返回。

执行速度对比

可以看到,在我到电脑上forEach()的执行速度比map()慢了70%。每个人的浏览器的执行结果会不一样。你可以使用下面的链接来测试一下: 

适用场合

取决于你想要做什么。

forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。

let arr = ['a', 'b', 'c', 'd'];arr.forEach((letter) => {    console.log(letter);});// a// b// c// d

 

map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。

let arr = [1, 2, 3, 4, 5];let arr2 = arr.map(num => num * 2).filter(num => num > 5);// arr2 = [6, 8, 10]

 

 上面代码中:我们首先使用map将每一个元素乘以2,然后紧接着筛选出那些大于5的元素。最终结果赋值给arr2

总结

  • 能用forEach()做到的,map()同样可以。反过来也是如此。
  • map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
  • forEach()允许callback更改原始数组的元素。map()返回新的数组。

参考原文:

https://blog.fundebug.com/2018/02/05/map_vs_foreach/

转载于:https://www.cnblogs.com/amcy/p/10101774.html

你可能感兴趣的文章
CDMA鉴权
查看>>
ASP.NET MVC Identity 兩個多個連接字符串問題解決一例
查看>>
过滤器与拦截器区别
查看>>
第二阶段站立会议7
查看>>
JAVA多线程
查看>>
delphi 更改DBGrid 颜色技巧
查看>>
POJ 2031 Building a Space Station
查看>>
任意阶幻方(魔方矩阵)C语言实现
查看>>
织梦教程
查看>>
杭电多校 Harvest of Apples 莫队
查看>>
C/C++心得-结构体
查看>>
函数名作为参数传递
查看>>
apt-get for ubuntu 工具简介
查看>>
数值计算算法-多项式插值算法的实现与分析
查看>>
day8-异常处理与网络编程
查看>>
Python基础-time and datetime
查看>>
shell脚本练习01
查看>>
WPF图标拾取器
查看>>
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>