首先看看官网对二者的解释:
forEach()
方法对数组的每个元素执行一次给定的函数。
map()
方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
二者的参数都一样,都有两个参数,两个参数分别为:
callbackFn参数
为数组中每个元素执行的函数。并会丢弃它的返回值。该函数被调用时将传入以下参数:
-
element
数组中正在处理的当前元素。
-
index
数组中正在处理的当前元素的索引。
-
array
调用了
forEach()
的数组本身。
thisArg
参数 可选
执行 callbackFn
时用作 this
的值。
forEach无返回值,一直为undefined,可以改变原数组
map有返回值,会返回一个新的数组,不会修改原数组
const arr = [1,2,3,4]
const res = arr.forEach((element, index, arry) => {
arry[index] = element + 1
})
console.log(res) // undefined
console.log(arr) // [2, 3, 4, 5]
const arr = [1,2,3,4]
const res = arr.map((element, index, arry) => {
return element + 1
})
console.log(res) // [2, 3, 4, 5]
console.log(arr) // [1, 2, 3, 4]