概要:同样是循环操作数组的方法,虽然 map 能做的 forEach 都能做,反过来也是如此。但是其中的差别还是可以探究一下的
一、mdn上对map 和 forEach 的定义:
forEach() 方法对数组的每个元素执行一次给定的函数。
map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
let arr = [1, 2, 3, 4] // 想输出 [2, 4, 6, 8]
arr.forEach(item=>{
item = item*2
})
console.log(arr) // [1, 2, 3, 4] !!!(划重点)forEach循环无法改变数组元素为原始值的元素
// 这种时候想要用forEach达到目的就只能
arr.forEach(item => {
newArr.push(item*2)
})
console.log(newArr) // [2, 4, 6, 8]
// 或者用map配合箭头函数简写 完美
let mapArr = arr.map(item => item*2 )
console.log(mapArr ) // [2, 4, 6, 8]
总结:
map 能做的 forEach 都能做,反过来也是如此。
map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
forEach()允许callback更改原始数组的元素。map()返回新的数组。