map和forEach的区别

map 返回其原始数组的新数组,但是 forEach 却没有。但是它们都确保了原始对象的不变性。

[1,2,3].map(d => d + 1); // [2, 3, 4]; 
[1,2,3].forEach(d => d + 1); // undefined; 

如果更改数组内的值,forEach 不能确保数组的不变性。这个方法只有在你不接触里面的任何值时,才能保证不变性。

[{
    
    a: 1, b: 2}, {
    
    a: 10, b: 20}].forEach((obj) => obj.a += 1); 
// [{a: 2, b: 2}, {a: 11, b: 21}] 
// 数组已更改

何时使用map()和forEach()?

由于它们之间的主要区别在于是否有返回值,所以你会希望使用 map 来制作一个新的数组,而使用 forEach 只是为了映射到数组上。

在创建一个新的数组时使用map,当你不需要制作一个新的数组,而是要对数据做一些事情时,就使用forEach

猜你喜欢

转载自blog.csdn.net/Sunshine_GirlXue/article/details/110870892