3 回答
TA贡献1815条经验 获得超6个赞
他们是不一样的。让我解释一下区别。
forEach:这会遍历列表,并对每个列表成员应用一些有副作用的操作(例如:将每个列表项保存到数据库)
map:这会遍历一个列表,转换该列表的每个成员,然后返回与转换后的成员大小相同的另一个列表(例如:将字符串列表转换为大写)
TA贡献1828条经验 获得超3个赞
Array.forEach “每个数组元素执行一次提供的函数。”
Array.map “创建一个新数组,其结果是对该数组中的每个元素调用一个提供的函数。”
因此,forEach实际上不返回任何东西。它只是为每个数组元素调用函数,然后就完成了。因此,您在该调用函数中返回的所有内容都将被简单丢弃。
另一方面,map将类似地为每个数组元素调用该函数,但不是丢弃其返回值,而是捕获它并构建这些返回值的新数组。
这也意味着您可以map在任何使用位置使用它,forEach但是仍然不应该这样做,因此您不会出于任何目的而收集返回值。如果您不需要它们,不收集它们会更有效率。
TA贡献1829条经验 获得超13个赞
+ ---------------- + -------------------------------- ----- + --------------------------------------- +
| | foreach | 地图|
+ ---------------- + -------------------------------- ----- + --------------------------------------- +
| 功能| 对每个|执行给定的操作。对|执行给定的“转换”
| | 数组的元素| 每个元素的“副本” |
+ ---------------- + -------------------------------- ----- + --------------------------------------- +
| 返回值 返回未定义 返回转换后的新数组|
| | | 保留原始数组的元素|
| | | 不变
+ ---------------- + -------------------------------- ----- + --------------------------------------- +
| 首选| 执行非转换,如| 获取包含|的输出的数组
| 使用场景| 在每个元素上进行处理。| 每个元素上完成的一些处理|
| 和示例 | 的数组。|
| | 例如,将所有元素保存在|中。|
| | 数据库| 例如,获得|的数组
| | | |中每个字符串的长度
| | | 数组|
+ ---------------- + -------------------------------- ----- + --------------------------------------- +
添加回答
举报