js的数组学习笔记

  1. 向数组中添加元素

    // 前提声明 arr 是一个数组
    arr = [1, 2, 3]
    arr.concat(4, [5, 6], [7])
    // 生成新数组 [1, 2, 3, 4, 5, 6, 7]
    
  2. 详解数组方法.forEach()

    • 可传入两个参数,一个是必传的回调,另一个是选传的this值,默认undefined,箭头函数,传入的this无效

    • 回调函数有三个实参,分别是当前值索引值原数组,当前值和索引值不可修改,原数组可修改

    • 当前值是引用类型时,可以对其内部数据进行修改,但是不可以用其他引用类型直接赋值给当前值,那样也是不可以修改的,当为普通值时就完全不支持修改了

    • 索引值也是不可修改的

    • 传过来的原数组可以修改,且修改后的值会保留到数组中

    • .forEach()的返回值是undefined,即没有返回值

      // 普通类型的数组
      let arr = [1,2,3,4,5,6,7,8,9,10]
      arr.forEach((val, index, arrs) => {
          arrs[index] = val + 2 // arrs是数组的引用,当进行修改时,原数组会发送变化
          val = val + 1 // 不会改变原数组,即对val的修改有效果但是不会被保留下来
      })
      // 对象数组
      let arr = [
              {
                name: '张山',
                age: 2
              },
              {
                name: '李斯',
                age: 4
              }
            ]
      
      arr.forEach((val, index, arrs) => {
          // arrs[index] = val + 2
          val.name = val.name + val.age // 修改会被保留
          val.age = val.age * val.age 
          val = {             // 对val的修改,有效果但是不会被保留
              name: val.age,
              age: val.name
          }
      })
      

      个人对 .forEach() 中回调函数的理解:回调函数的三个值,传入时,被复制一份,前两个是普通数据类型时,在函数内部进行的修改,必然是不会被保留的,当使用完后,便被抛弃了,而第三个值传入的是数组,是引用类型,传进来的是对应数组的地址,故修改保留而当前第一个传入的是对象时,也是地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值