一点通透:map与forEach的用法

203 阅读1分钟

map

map是什么?

map() 方法用于遍历一个数组,并且创建一个新数组,不会修改原数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
map() 是返回一个新数组,当你不使用返回新数组时,请使用forEach或for-of

怎么用?

首先map()里面必须要有一个回调函数functiong,这个回调函数就是用来处理调用的数据的
arr.map(function(){})

回调函数里可以传入三个参数,其中有一个是必须传入的(item,作为循环遍历数组的每一个数据的值),其他两个可以选择性的传入,index是索引下标

arr.map(function(item,index){})

需要在回调函数内写return,返回数据

let arr = [1,2,3,4,5]
						
let newArr = arr.map((item,index)=>{
    // console.log(item) //1,2,3,4,5
    // console.log('index',index) //0,1,2,3,4
    return 2*item
})
console.log(newArr) //2,4,6,8,10

forEach

forEach是什么

forEach()  方法对数组的每个元素执行一次给定的函数。他不象map一样可以有返回值,不能使用

let newArr = arr.forEach(item=>{}) //这是错误的用法,newArr 是undefined


forEach与for循环一样,都是对数组进行遍历,forEach是对for(let i=0;i<arr.leng;i++){}的简写

用法

let arr = [1,2,3,4,5]
arr.forEach(item=>{
    console.log(item*2)
})
  • 正确:如果是基本数据类型,forEach不会改变原数组的值 ,如果是 引用数据类型,则会修改原数组的值
let arr2=[5]
arr2.forEach(item=>{
    item = item*2
})
console.log(arr2)  //[5]

let arr3=[{a:5}]
arr3.forEach(item=>{
    item.a = item.a*2
})
console.log(arr3) //[a:10]