JS中Map和ForEach的区别

Array.prototype.map()和Array.prototype.forEach()

forEach(): 针对每一个元素执行提供的函数

map(): 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来

到底有什么区别呢?forEach()方法不会返回执行结果,而是undefined。也就是说,forEach()会修改原来的数组。而map()方法会得到一个新的数组并返回。

示例

let arr = [1, 2, 3, 4, 5];

ForEach

注意,forEach是不会返回有意义的值的。
我们在回调函数中直接修改arr的值。

arr.forEach((num, index) => {
 return arr[index] = num * 2;
});

执行结果如下:
// arr = [2, 4, 6, 8, 10]

Map

let doubled = arr.map(num => {
 return num * 2;
});

执行结果如下:
// doubled = [2, 4, 6, 8, 10]

Map vs. forEach - jsPref

forEach()的执行速度比map()慢了70%

forEach适合于你并不打算改变数据的时候,map()适用于你要改变数据值的时候。例如:

let arr = [1, 2, 3, 4, 5];
let arr2 = arr.map(num => num * 2).filter(num => num > 5);
// arr2 = [6, 8, 10]

 

上一篇:js中for循环语句


下一篇:c#中List的元素遍历(foreach)和去重复(distinct)