前端面试JS—map 和 forEach 的区别
目录
相同点:
不同点:
相同点:
- 都是循环遍历数组中的每一项(接收一个函数作为参数,并对每个数组元素执行一次)
- 每次执行匿名函数都支持三个参数:(三个参数分别为item(当前每一项),index(索引值), arr(原数组))
- 匿名函数中的this都是指向window
- 只能遍历数组
不同点:
- 返回值不同: forEach() 方法返回 undefined,而 map() 返回一个包含转换后元素的新数组。map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
- forEach()允许callback更改原始数组的元素。map()返回新的数组。
- map() 是可链接的。这意味着你可以在对数组执行 map() 方法后附加reduce(),sort(),filter() 等,但是forEach() 不能,因为你可能猜到,它返回undefined