-
返回值:
map()
方法返回一个新的数组,该数组的元素是对原始数组中的每个元素应用回调函数后的返回值。forEach()
方法没有返回值,只是对数组中的每个元素执行回调函数。
-
使用场景:
map()
方法适合在遍历数组过程中对每个元素进行转换或映射操作,并返回一个新的转换后的数组。forEach()
方法适合在遍历数组过程中执行一些副作用操作,例如修改数组的元素,更新全局变量等。
-
对原数组的影响:
map()
方法不会改变原始数组的元素,它会返回一个新的数组。forEach()
方法也不会改变原始数组的元素,但可以通过在回调函数中修改数组来实现对原数组的改变。
下面是使用示例:
使用 map()
方法:
var numbers = [1, 2, 3, 4, 5];
var doubledNumbers = numbers.map(function(num) {
return num * 2;
});
console.log(doubledNumbers); // 输出 [2, 4, 6, 8, 10]
使用 forEach()
方法:
var numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(num) {
console.log(num);
});
// 输出:
// 1
// 2
// 3
// 4
// 5
总结:map()
方法返回一个新的数组,用于对原数组的每个元素进行转换;forEach()
方法没有返回值,用于对原数组的每个元素执行操作。
虽然 forEach()
方法本身不支持修改原数组的功能,但通过在回调函数中使用数组索引和赋值操作,可以实现对原数组的改变。
例如,如果要将数组中的每个元素都加倍,并更新原数组中的元素,可以在 forEach()
的回调函数中使用索引来修改原数组的元素。
以下是一个示例:
var numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(num, index, arr) {
arr[index] = num * 2;
});
console.log(numbers); // 输出 [2, 4, 6, 8, 10]
在上述示例中,回调函数接收三个参数:当前元素的值 num
、当前元素的索引 index
和被遍历的数组 arr
。通过使用索引 index
和赋值操作符 =
,可以修改原数组中的元素。
这样,在 forEach()
循环结束后,原数组 numbers
中的元素会被修改为加倍后的值。
需要注意的是,使用 forEach()
修改原数组的方式可能会让代码变得难以理解和维护,因为 forEach()
主要用于遍历数组执行操作,而不是修改数组。如果需要对数组进行转换或修改,更推荐使用 map()
方法,它能直接返回新的转换后的数组,更加清晰和易读。