在 JavaScript 中,forEach() 和 map() 方法都用于遍历数组,但它们的用途各有不同。forEach() 会对数组中的每个元素执行一次提供的函数,但它不会返回一个新的数组;而 map() 则会对元素进行转换,并返回一个新的数组。
JavaScript forEach()
JavaScript 的 forEach() 方法会遍历数组元素,对数组中的每个元素执行一次指定的函数。它不会返回新数组,也不会改变原始数组,这使得它非常适合用于打印日志或就地修改元素等操作。
语法:
array.forEach(callback(currentValue, index, array), thisArg);
#### 参数:
该方法接受五个参数,如上所述并在下面描述:
- callback: 该参数保存了要对数组中每个元素调用的函数。
- element: 该参数保存了当前正在处理的元素的值。
- index: 该参数是可选的,它保存了当前值元素在数组中的索引,从 0 开始。
- array: 该参数是可选的,它保存了调用 Array.every 的完整数组。
- thisArg: 该参数是可选的,它保存了要在执行回调函数时作为 this 传递的上下文。如果传递了上下文,它将在每次调用回调函数时像这样使用,否则默认使用 undefined。
返回值: 该方法的返回值始终是 undefined。根据参数函数的功能,该方法可能会也可能不会改变提供的原始数组。
示例: 在这个例子中,我们遍历一个数字数组 [1, 2, 3, 4],并将每个数字乘以 2。
JavaScript
CODEBLOCK_7468ef02
Output
2
4
6
8
JavaScript map()
JavaScript 的 map() 方法通过对原始数组的每个元素应用指定的函数来创建一个新数组。它返回一个包含转换后值的新数组,而原始数组保持不变,通常用于数据操作和转换。
语法
map((currentElement, indexOfElement, array) => { ... } );
#### 参数:
callback: 对每个元素执行的函数,接受三个参数:currentValue: 数组中当前正在处理的元素。index(可选): 当前正在处理元素的索引。array(可选): 调用了 map 方法的数组。- INLINECODE922da323 (可选): 执行 callback 时用作 INLINECODEf7bf8d31 的值。
返回值: 一个新数组,其中包含对数组中每个元素调用所提供函数的结果。
示例: 在这个例子中,我们创建了一个新数组 doubledNumbers,其中原始数组 [1, 2, 3, 4] 中的每个数字都乘以了 2。
JavaScript
CODEBLOCK_bbe7ffff
Output
[ 2, 4, 6, 8 ]
forEach() 和 map() 方法的区别
map()
—
map() 方法返回一个全新的数组。
map() 方法根据提供的回调函数返回新创建的数组。
使用 map() 方法,我们可以链式调用其他方法,例如 reduce()、sort() 等。
它不会改变原始数组。结论: 由于它们的工作方式差异很小,而且执行速度也没有显著的差异,所以现在是时候考虑该选择哪一个了。如果你需要返回值的优势,或者因为某种原因不想改变原始数组,那么请使用 map() ;否则,如果你只是对数组进行迭代或执行非转换性的操作,forEach() 可能是更好的选择。