分析.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()等组合使用)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!