arr.forEach()和arr.map()比较

结论:
arr.forEach()无法对数组元素item直接进行赋值,但若item为对象,可以对item的属性进行更改
arr.map()会直接创建一个新的数组,但可以在某种程度上实现arr元素item的更改。

arr.forEach()

 let a = [1, 2, 3, 4, 5, 6, {
            name: 'ming',
            sex: 'male'
        }]
        let b = a.forEach((p) => {
            if (p.name) {
                p.name = 'hong'
                p.sex = 'female'
            } else {
                p = 2
            }
        })
    console.log(a);
变量p为数组a内的元素,且,遍历整个数组a

如果直接对p进行更改,并无效果,p仍为原纸
但,若p为对象,对p内属性进行修改,是有效的

   输出结果:
   (7) [1, 2, 3, 4, 5, 6, {…}]
   0: 1
   1: 2
   2: 3
   3: 4
   4: 5
   5: 6
   6: {name: 'hong', sex: 'female'}

arr.map()

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果
即,map创建了一个新数组,且,需要用一个变量接收

 let a = [1, 2, 3, 4, 5, 6, {
            name: 'ming',
            sex: 'male'
        }]
        let b=a.map((item) => {
            return {
                a: 1,
                b: 1
            }
        })
        console.log(a);
        console.log(b);

map()内参数为一个函数,item为遍历数组arr的元素,对arr内的每一个元素进行操作,return的{a:1,b:2}即为新数组内元素的值
输出为:

(7) [1, 2, 3, 4, 5, 6, {…}]
0: 1
1: 2
2: 3
3: 4
4: 5
5: 6
6: {name: 'ming', sex: 'male'}
(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {a: 1, b: 1}
1: {a: 1, b: 1}
2: {a: 1, b: 1}
3: {a: 1, b: 1}
4: {a: 1, b: 1}
5: {a: 1, b: 1}
6: {a: 1, b: 1}

由此可见,arr.map()并不会更改数组arr,他会返回一个新的数组

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值