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)