分析.foreach和.map的区别

在程序员编程的过程中经常会有遍历数组的需要,.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()等组合使用)。

 

posted @   AllenPanni  阅读(2253)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示