路虎哥哥

导航

forEach和map方法的区别:

forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数;
 
总结:forEach操作数据会改变原数组,map不会改变原数组,而是会返回一个新数组。
 
一、相同点:
1. 都是循环遍历数组中的每一项
2. 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
3. 匿名函数中的this都是指向window。
4. 只能遍历数组;
 
二、不同点:
1. map() 会分配内存空间存储新数组并返回,forEach() 不会返回数据。
2. forEach() 允许callback更改原始数组的元素。map() 返回新的数组。
 
forEach()针对每一个元素执行提供的函数,对数据的操作会改变原数组。
map()不会改变原数组的值,返回一个新数组,新数组中的值为原数组调用函数处理之后的值;
map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。
 
 
let data77 = [1,2,3,4];
let arr45 = data77.map(item => {
    return {
        label: item,
        value: ''        
    } 
}) console.log('arr45 :>> ', arr45); //(4) [{…}, {…}, {…}, {…}] 0: {label: 1, value: ""} 1: {label: 2, value: ""} 2: {label: 3, value: ""} 3: {label: 4, value: ""} length: 4

 

 
    
上面是map的方法,如果是forEach,直接返回undefined;
 
 
var ary = [1,2,4,3];
 
var res = ary.forEach(function(item,index,arr){ //换map返回返回10,20,40,30,用foreach返回undefined
   item*10;
})
 
console.log(res);//undefined; forEach会对原来的数组产生改变;
 

 

 
 
 

posted on 2022-07-26 22:45  路虎哥哥  阅读(235)  评论(0编辑  收藏  举报