为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript:.forEach()和.map()之间的区别

JavaScript:.forEach()和.map()之间的区别

我知道有很多这样的话题。而且我知道基础知识:.forEach()既可以在原始阵列.map()上运行,也可以在新阵列上运行。就我而言:function practice (i){    return i+1;};var a = [ -1, 0, 1, 2, 3, 4, 5 ];var b = [ 0 ];var c = [ 0 ];console.log(a);b = a.forEach(practice);console.log("=====");console.log(a);console.log(b);c = a.map(practice);console.log("=====");console.log(a);console.log(c);这是输出:[ -1, 0, 1, 2, 3, 4, 5 ]=====[ -1, 0, 1, 2, 3, 4, 5 ]undefined=====[ -1, 0, 1, 2, 3, 4, 5 ][ 0, 1, 2, 3, 4, 5, 6 ]我不明白为什么要使用practice更改bto的值undefined。如果这是一个愚蠢的问题,我感到很抱歉,但是我是这种语言的新手,到目前为止我发现的答案并不令我满意。
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

他们是不一样的。让我解释一下区别。


forEach:这会遍历列表,并对每个列表成员应用一些有副作用的操作(例如:将每个列表项保存到数据库)


map:这会遍历一个列表,转换该列表的每个成员,然后返回与转换后的成员大小相同的另一个列表(例如:将字符串列表转换为大写)


查看完整回答
反对 回复 2019-09-24
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

Array.forEach “每个数组元素执行一次提供的函数。”


Array.map “创建一个新数组,其结果是对该数组中的每个元素调用一个提供的函数。”


因此,forEach实际上不返回任何东西。它只是为每个数组元素调用函数,然后就完成了。因此,您在该调用函数中返回的所有内容都将被简单丢弃。


另一方面,map将类似地为每个数组元素调用该函数,但不是丢弃其返回值,而是捕获它并构建这些返回值的新数组。


这也意味着您可以map在任何使用位置使用它,forEach但是仍然不应该这样做,因此您不会出于任何目的而收集返回值。如果您不需要它们,不收集它们会更有效率。


查看完整回答
反对 回复 2019-09-24
?
烙印99

TA贡献1829条经验 获得超13个赞

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| | foreach | 地图|

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| 功能| 对每个|执行给定的操作。对|执行给定的“转换”

| | 数组的元素| 每个元素的“副本” |

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| 返回值 返回未定义 返回转换后的新数组|

| | | 保留原始数组的元素|

| | | 不变

+ ---------------- + -------------------------------- ----- + --------------------------------------- +

| 首选| 执行非转换,如| 获取包含|的输出的数组

| 使用场景| 在每个元素上进行处理。| 每个元素上完成的一些处理|

| 和示例 | 的数组。|

| | 例如,将所有元素保存在|中。|

| | 数据库| 例如,获得|的数组

| | | |中每个字符串的长度

| | | 数组|

+ ---------------- + -------------------------------- ----- + --------------------------------------- +


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 816 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信