Array.prototype.map()和Array.prototype.forEach()之间的区别是什么?

Array.prototype.map()Array.prototype.forEach()是JavaScript中最常用的两个方法之一。它们都用于遍历数组并对每个元素执行某些操作。然而,它们并不相同,也不能互换使用。

这两者之间的关键区别在于返回值Array.prototype.map()的返回值是一个由回调函数的结果组成的新数组。而Array.prototype.forEach()的返回值是undefined

简单来说,Array.prototype.forEach()用于对数组中的每个元素执行某些操作,而Array.prototype.map()用于根据原始数组中的元素创建一个新数组。让我们看一个例子来消除任何困惑:

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(num => console.log(num * 2));
// 没有返回值,输出:2, 4, 6, 8, 10

const doubledNumbers = numbers.map(num => num * 2);
// 返回一个新数组:[2, 4, 6, 8, 10]

我喜欢用Array.prototype.map()代表转换,而Array.prototype.forEach()代表迭代来区分它们。希望这两种解释中的一种能让你明白它们之间的区别,并帮助你记住它们。

最后,我想提醒你,在某些情况下,谦卑的for循环可能更高效,比如提前跳出循环。始终选择适合任务的正确工具,因为ES6几乎为每种用例都提供了一个方法。