数组方法:map() 和 forEach()的区别

281 阅读1分钟

map()

返回值:一个新数组,每个元素都是回调函数的结果

map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数。

var array = [1, 4, 5, 2, 8]
var array1 =  array.map(item =>{
   return item * item
})
console.log(array1) //array1 = [1, 16, 25, 4, 64]

forEach()

返回值:undefined

forEach()方法对数组的每个元素执行一次提供的函数,只是对每个元素会进行操作。不是必须有返回值。

var array2 = ['a', 'b', 'c', 'd']
array2.forEach(function(element){
   console.log(element) // 依次打印出来 a b c d
})

二者相同点:

  • 都是循环遍历数组中的每一项
  • 在遍历中执行匿名函数都可以接收三个参数,分别是:数组中的每一项、数组的索引值、原数组
  • 匿名函数中的this都指向window

二者不同点:

  • 返回值不同,map()方法返回一个新数组,且不会改变原数组。不会对空数组进行检测。
  • forEach(),只是注重对每个元素的处理,并没有强制返回什么,默认是undefined。不会对空数组进行检测。