ES6-解构赋值

解构赋值就说照葫芦画瓢,右侧的数据是什么样的结构,左侧就是同样的结构,拿对应位置上的数据。

        let arr = [1,2,3]
        let [a,b,c] = arr
        console.log(a,b,c);

1.经典利用解构交换 两个变量

ps:以前我们需要找一个第三方变量来进行交换

    let a = 10
    let b = 20;
    let temp
    temp = a
    a = b
    b = temp

现在我们只需要解构就欧克了

        let a = 10
        let b = 30;
        [a,b] = [b,a] //注意:这行代码上面那一行必须尾部有; 或这行代码前面加;
        console.log(a,b);

 2.解构的其他情况

2.1变量多但是值少

        let [a,b,c,d] = [5,77,88]
        console.log(a,b,c,d);

结论:没有位置与之对应,声明变量,没有赋值,默认值undefined

2.2变量少,值很多

      let [a,b,c] = [5,77,88,90,80]
        console.log(a,b,c);

 结论:按照对应位置去获取数据,多余数据就拿不到!

2.3配合使用剩余参数...

       let [a,b,...c] = [5,77,88,90,80,40]
        console.log(a,b,c);

2.4设定默认值

        let [a,b,c=100] = [10,20]
        console.log(a,b,c);

结论:上面说到如果参数多值少,那就没有值与之对应返回undefined,那我们就可以给他设置一个默认值,返回的就是默认的值,当有值与之对应的时候就返回解构的值

2.5按需解构

        let [,,b] = [10,20,30]
        console.log(b);

 结论:不需要数据可以跳过忽略的!利用逗号来占位置

例:只拿2

        let [,[,b]] = [10,[1,2,3],5]
        console.log(b);

3.解构对象

过去:

    // 需求:把每个数据取出来放在一个变量,打印下!
    let obj = {
      name: "李四",
      age: 18
    }
    // 曾经
    // let name = obj.name
    // let age = obj.age

 利用解构赋值,右边对象是{}  左侧结构赋值也是{}

 1、我们同名name变量,获取是对象内部同名属性名name的属性值!不是数组,没有顺序!讲究是同名!

2、如果获取不存在属性名,没有解构成功,变量是undefined

      let obj = {
        name: "李四",
        age: 18,
      };
      let {name,age} = obj
      console.log(name,age);

 3.1给属性名重命名

当我们两个对象中有同样的属性名,我们都需要对其进行解构那变量名就撞了需要给他们命其他名

    let obj1 = {
      name: "张三",
      age: 18
    }

    let obj2 = {
      name: "李四",
      age: 23
    }

    let { name: a } = obj1     // 左侧找name属性名,把值给变量a上
    let { name: b } = obj2
    console.log(a, b);

 例:拿到王五和10

      let obj = {
        list: {
            name:"王五",
            number:[10,20,30]
        },
        age:18
      };
      let {list:{name,number:[b]}} = obj
      console.log(name,b);

4.解构字符串

把它当成数据

    let string = "abcdefg"
    let [x,y,z] = string
    console.log(x,y,z);
    //取长度   冲突的话起个别名
    let {length:lens} = string
    console.log(lens);

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值