有需求联系

Information

- 信息浏览 -

JS中Map和ForEach的区别

2022-12-04 1239

Map

定义和用法

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。


forEach

定义和用法

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。


区别

1、map速度比forEach快

2、map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,forEach返回undefined

3、map因为返回数组所以可以链式操作,forEach不能

4, map里可以用return(return的是什么,相当于把数组中的这一项变为什么(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了) ,而forEach里用return不起作用,forEach不能用break,会直接报错


那么接下来,继续做分析,为什么更推荐用.map(),而不是.forEach()?

首先,.map()要比.forEach()执行速度更快。虽然我也说过执行速度不是我们需要考虑的主要因素,但是他们都比for()要更好用,那肯定要选更优化的一个。

map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。

第二,.forEach()的返回值并不是array。如果你想用函数式编程写个链式表达式,.map()将会是你不二的选择。

forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。


使用推荐排序  .map() > .forEach() > for()

var arr = [10, 2, 3];
    let arr1 = arr.map(v => {
        return v * 2
    }).sort((x, y) => {
        return x - y
    });
    console.log(arr1)


Copyright © 2024 镇江小蚂蚁信息科技有限公司 All Rights Reserved.