一、forEach方法
定义:对数组的每一个元素执行一次给定的函数
语法:
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
参数:
callback:为数组中每个元素执行的函数,这个函数接收三个参数
currentValue:数组中当前正在处理的元素
index(可选):数组中正在执行元素的索引
arry(可选):forEach方法正在操作的数组
thisArg:执行 callback 函数时值被用作this。
返回值:undefined
二、map方法
定义:map方法返回一个新的数组,数组中的元素为原数组元素调用函数处理之后的值 map方法会按照原始数组元素顺序依次处理元素
注意:1.map方法不会对空数组进行检测 2.map方法不会改变原数组
语法:
let new_array = arr.map(function callback(currentValue[, index[, array]]) {
// Return element for new_array
}[, thisArg])
参数:
callback:生成新数组元素的函数,这个函数接收三个参数
currentValue:数组中当前正在处理的元素
index(可选):数组中正在执行元素的索引
arry(可选):map方法调用的数组
thisArg:执行 callback 函数时值被用作this。
返回值:一个由原数组每个元素执行回调函数的结果组成的新数组。
三、二者的区别
1.map的执行速度比forEach快
2.map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,foreach返回undefined
3.因为map会返回一个新的数组,所以可以执行链式操作
let arr=[1,2,6,8,9]
let arr2=arr.map(value=>(value*value)).filter(value => value > 10)
//arr2=[36, 64, 81]
首先将map元素乘以它自身,然后再筛选出大于10的元素,并将这些元素赋值给arr2
4.map里可以用return,而forEach中return不起作用,forEach不能直接用break,会报错