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几乎为每种用例都提供了一个方法。