JS中的foreach方法和map方法

224 阅读2分钟

一、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,会报错