map()和ForEach()的区别

定义和用法

map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。 map() 不会改变原始数组。
map()

forEach()

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。
forEach()

相同点

1、只能遍历数组
2、都是遍历数组每一项
3、都有三个参数:item(遍历的项)、index(当前索引)、arr(原数组)
4、匿名函数中的this都指向window

不同点

map()方法有返回值,会分配内存空间存储新数组并返回,不改变原数组

            let arr = [1,22,34,15,47]
            let empty = []
            let newarr = arr.map((item,index)=>{
                item+=1
                return item
            })
               let newEmpty = empty.map((item,index)=>{
                return item
            })

            console.log('newarr',newarr)   //newarr   [2, 23, 35, 16, 48]
            console.log('arr',arr)       //arr   [1,22,34,15,47]
            console.log('newEmpty ',newEmpty)       //newEmpty []

forEach()方法没有返回值,返回undefined

            let arr = [1,22,34,15,47]
            let empty = []
            let newarr = arr.forEach((item,index)=>{
                item+=1
                // arr[index]+=1       可以通过索引改变原数组
                return item
            })
            let newEmpty = empty.forEach((item,index)=>{
                return item
            })
            console.log('arr',arr)   //arr   [1,22,34,15,47]
            console.log('newarr',newarr)   //newarr   undefined
            console.log('newEmpty ',newEmpty)   //newEmpty undefined
            

map()方法输出可以与其他方法(如reduce()、sort()、filter())链接在一起,以便在一条语句中执行多个操作。

forEach()是一个终端方法,这意味着它不能与其他方法链接,因为它返回undefined。

            let arr = [1, 22, 34, 15, 47]
            let newarr = arr.map((item, index) => {
                item += 1
                return item
            }).reduce(getSum)
            
            function getSum(total, num) {
                return total + num;
            }
             console.log('newarr', newarr)   newarr   124

如果需要跳出循环 建议使用some、every
map()和forEach() 只能通过throw error

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值