首页 > 试题广场 >

说一说map 和 forEach 的区别?

[问答题]
说一说map 和 forEach 的区别?
直白点说,forEach是针对数组中每一个元素,提供一个可执行的函数操作,因此它(可能)会改变原数组中的值。不会返回有意义的值,或者说会返回undefined;而map是会分配内存空间创建并存储一个新的数组,新数组中的每一个元素由调用的原数组中的每一个元素执行所写的函数得来,返回的就是新数组,因此不会改变原数组的值; 
个人感觉map更加贴近于函数式编程的特点,而且执行起来也会比forEach快很多,所以我在二者都可的情况下会更推荐map
编辑于 2022-04-24 16:42:46 回复(0)
1. map有返回值,且返回值是新数组,而forEach无返回值,返回结果undefined,一般做修改修改数组操作 2. map和forEach用只能用try...catch...中断抛出错误中断,而return不能,用其效果相当于for循环的continue会跳过此次循环进入下一次循环。
编辑于 2022-11-05 12:42:48 回复(6)
map返回新数组,而forEach返回值为undefined。forEach能改变原数组,而map不会。
发表于 2022-04-30 13:51:44 回复(4)
forEach和map都不改变原数组,但是能改变原数组对象中的基本数据类型;map会返回一个新的数组和原数组长度一样的数组,而forEach没有返回值,map是会分配内存空间创建并存储一个新的数组,map的处理速度比forEach快,更推荐使用map
发表于 2022-05-31 15:56:41 回复(0)
1.共同点:都是循环遍历一个数组中的每一项 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前项的索引index,原始数组input 3.匿名函数中的this都是指Window 4.只能遍历数组 不同点:foreach没有返回值 能改变原数组 map返回一个新的数组,不修改原数组 map的执行速度更快
发表于 2022-08-30 21:42:24 回复(0)
相同点:1.都能遍历数组 2.中途不能被break打断 3.函数中都有三个参数,当前遍历的元素,当前元素的索引,原数组。 不同:1.forEach没有返回值,也就是返回undefined,map会开辟新的一个内存空间,返回新的数组,这点也方便链式调用其他数组方法。 2.map的效率比forEach高
发表于 2022-05-03 13:47:04 回复(1)
hash 和history都是利用浏览器的两种特性实现的,history是根据浏览器的记录栈的api实现,hash是通过hash值的变化来实现 hash有#号,history没有
发表于 2022-05-13 11:23:44 回复(4)
map返回一个数组,foreach返回一个undefined。map可以链式调用,foreach不行。map不改变原数组,foreach通过回调函数可以改变原数组。使用场景:map提取属性,数据转换,foreach执行副作用操作(日志记录,dom操作等),它们都不可中断,map因为要创建新数组比foreach慢点
发表于 2025-05-05 10:10:16 回复(0)
foreach()会针对每个元素执行提供的函数,对数据的操作会改变原数组,没有返回值。map()不会改变原数组的值,返回一个新数组,新数组的值为原数组调用函数处理之后的值。
发表于 2025-03-21 11:08:31 回复(0)
map不会改变原数组,会单独创建返回一个新数组,forEach是提供了一个操作原数组的函数,但不会返回有意义的值
编辑于 2024-03-03 15:23:40 回复(0)
1. map一般不修改原数组,forEach能改变原数组 2. map有返回值,创建新数组,而forEach无返回值,返回结果undefined 3. map和forEach用只能用try...catch...中断抛出错误中断,而return不能,用其效果相当于for循环的continue会跳过此次循环进入下一次循环。
发表于 2022-08-03 17:53:54 回复(0)
map有返回值 foreach没有 map不改变原来的数组,会返回一个新的数据,foreach会修改原来的数组
发表于 2022-05-23 10:15:53 回复(0)
(1)map()返回的是一个新数组;forEach()返回的是undefined。 (2)map()不会改变原数组。forEach()本身不会直接改变原数组,但其回调函数中的操作可能会改变原数组。 (3)map()可以进行链式调用,forEach()不行。因为map()的返回值是数组。【链式调用:允许在同一个对象上连续调用多个方法】 (4)使用场景:map()用于需要基于原数组创建新数组时;forEach()用于只需要遍历数组执行操作时
发表于 2025-06-09 22:52:37 回复(0)
map函数会返回新数组,遵守函数式编程,不会修改原数组 。foreach没有返回值,用于修改变量等操作,更偏向于命令式编程。
发表于 2025-05-10 23:33:52 回复(0)
map返回新的值,可用来创建变量;foreach返回值为undefined,可用来输出
发表于 2025-04-26 21:40:51 回复(0)
map有返回值,创建新数组
发表于 2025-03-31 17:14:01 回复(0)
map和forEach针对数组中每一项都是值的情况时都不能改变原有数组,并且map永远不能更改原数组,但是forEach针对数组中的项是对象时候,可以更改原数组 map和forEach都不能被break和continue打断 map和forEach都不能等待异步方法的执行 map会返回一个新的数组 forEach一般用于循环遍历从而添加其他与之相关的操作 map会基于原数组基础上开辟一个新的空间,根据return返回一个与原数组长度一致的新数组,并且可以进一步链式调用 forEach返回undefined,它可以通过循环遍历,使用索引的方式修改元素
发表于 2025-03-14 17:13:22 回复(0)
使用map可以返回一个新的数组,forEach没有返回值
发表于 2025-03-02 18:58:30 回复(0)
map返回一个新数组,foreach遍历每个元素,不会返回值
发表于 2025-03-01 16:27:05 回复(0)
map创建新数组,返回处理后的值,return出来一个和原数组length一样的数组,即使数组元素使undefined或者null。forEach()返回结果是undefined,可以通过函数体内部使用索引修改数组的元素。map执行速度比forEach()快。
发表于 2025-02-26 12:19:28 回复(0)