在 JavaScript 中,map
和 forEach
都是用来遍历数组的方法,但它们在用途和返回值上有所不同:
-
用途:
map()
方法:创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数(每次迭代都执行该函数)。map
方法不会改变原始数组。forEach()
方法:遍历数组的每个元素,对每个元素执行一个由你提供的函数。forEach
方法不会返回任何值,它仅仅是为了执行给定的函数。
-
返回值:
map()
:返回一个新数组,该数组是通过执行传入的函数(对数组中的每个元素调用)并构建一个包含返回值的新数组来创建的。forEach()
:不返回任何值。它仅用于遍历数组和执行操作,不存储或返回任何结果。
-
使用场景:
- 使用
map
的时候,你通常希望根据数组的元素创建一个新数组,其中包含通过某种转换或操作得到的值。 - 使用
forEach
的时候,你可能只想遍历数组,对每个元素执行一些操作,但不打算基于这些操作的结果创建一个新数组。
- 使用
以下是一个简单的例子来说明二者的区别:
// 使用 map()
let numbers = [1, 2, 3, 4];
let squares = numbers.map(function(number) {return number * number;
});
console.log(squares); // 输出: [1, 4, 9, 16]// 使用 forEach()
numbers.forEach(function(number) {console.log(number * number); // 输出每个数的平方
});
在上面的例子中,map
创建了一个新的数组 squares
,其中包含了原数组 numbers
中每个数字的平方。而 forEach
方法则没有创建新的数组,它只是简单地打印出每个数字的平方。