美文网首页
ES6 学会解构赋值

ES6 学会解构赋值

作者: rainy66 | 来源:发表于2022-06-25 22:10 被阅读0次
    let  a = 'b';
    let b = 'a';
    [a,b] = [b,a];
    console.log(a,b);
    
    image.png
    let num1 = 30;
    let num2 = 10;
    let num3 = 40;
    let num4 = 20;
    [num1,num2,num3,num4] = [num2,num4,num1,num3]
    console.log(`第一:${num1},第二:${num2},第三:${num3},第四:${num4}`)
    
    image.png
    const arr = ['a','b','c','d','e','f','g','h'];
    const [num1,num2,num3] = arr;
    //自动创建三个变量并且分别给他们进行赋值,按照数组里的位置进行取值
    console.log(`第一名:${num1},第一名:${num2},第一名:${num3})`
    //输出为:第一名:a,第二名:b,第三名:c
    
    
    //取里面指定位置的元素
    const arr = ['蛋同学','鸡同学','鸭同学','饿同学','牛同学','杨同学'];
    const [, ,num3, , num5] = arr;
    console.log(`第三名:${num3},第五名: ${num5}`);
    //输出为第三名:鸭同学,第五名: 牛同学
    
    
    如果要进行解构赋值的那个变量名已经存在了,但是可以进行变量值的改写,解构赋值不一定用于新创建变量,还可以用于修改变量
    const arr = ['1同学','2同学','3同学','4同学','5同学','6同学'];
    let num3 = '九九';
    let num5 ='汪汪'
    //当数组里某个位置可能根本不存在,直接在指定位置赋值的方式把值添上就可以了
    [, ,num3, , num5,num7 = '7同学'] = arr;
    console.log(`第三名:${num3},第五名: ${num5},第七名:${7同学}`);
    //输出:第三名:3同学,第五名:5同学
    
    const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
    const {2: num3,4:num5} = arr;
    console.log(`第三名:${num3},第五名:${num5}`);
    //输出:第三名:3同学,第五名:5同学
    
    
    const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
    const [notExist = '数组为空'] = arr;
    console.log(notExist); 
    //输出为1同学
    这里如果数组为空就会自动显示“数组为空”,数组不为空就会直接替换掉默认值
    
    const arr =  ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
    const [num1,num2,num3,...restNum] = arr;
    console.log(`前三名是:${num1},${num2},${num3},不及格的是${restNum}`);
    //输出为1同学,2同学,3同学,不及格的是4同学,5同学,6同学,7同学
    //除了逐个指定进行赋值以外,如果有剩余的数组元素都需要保存起来,就可用三个点来表示剩余的不定元素都汇集在一个数组里面
    //注意不可以先把不定元素放前面,又在后面逐个赋值
    
    const arr = ["1同学","2同学","3同学"];
    const [...copyArry] = arr;
    console.log(copyArr);
    //输出: ["1同学","2同学","3同学"];
    
    //嵌套数组解构
    const arr = ['1同学','2同学',['3同学','4同学'],['5同学','6同学','7同学'],'8同学'];
    const [num1, ,[, num2],[, , num3]] = arr;
    console.log(`第1个数组的第1个元素:${num1},第2个数组的第2个元素:${num2},第3个数组的第3个元素:${num3}`);
    //输出:第1个数组的第1个元素:1同学,第2个数组的第2个元素4同学,第3个数组的第3个元素:7同学
    

    对象的解构赋值

    const obj = {
        id:'1',
        name:'老师',
        age:18,
        gender:'男',
        email:'256656@qq.com'
    }
    const { name_,email} =obj;
    console.log(nmae_,email);
    //老师,256656@qq.com
    
    
    const obj = {
        id:'1',
        name:'老师',
        age:18,
        gender:'男',
        email:'256656@qq.com'
    }
    const { name:Tname,email:Temail} =obj;
    console.log(Tname,Temail);
    //老师,256656@qq.com
    
    //如果要获取的属性名字早就存在数组里了,就不需要去逐个输入相应的属性名。可以通过调用数组元素来获取相应的属性名,
    //要给属性名加中括号,因为这里涉及到计算
    const obj = {
        id:'1',
        name:'老师',
        age:18,
        gender:'男',
        email:'256656@qq.com'
    }
    const arr = ['name','email'];
    const {[arr[0]]: Tname,[arr[1]]:Temail} = obj;
    console.log(Tname,Temail);
    //老师,256656@qq.com
    
    //如果获取对象的属性可能根本就不存在,可以使用等号来进行默认赋值
    const obj = {
        id:'1',
        name:'老师',
        age:18,
        gender:'男',
        email:'256656@qq.com'
    }
    const {name:Tname,email:Temail.major:Tmajor='计算机'} = obj;
    console.log(Tname,Tname,Tmajor);
    //老师 256656@qq.com 计算机
    
    const obj = {
        id:'1',
        name:'老师',
        age:18,
        gender:'男',
        email:'256656@qq.com'
    }
    const {id,age,..restObj}= obj;
    console.log(restObj);
    //输出:{name:'老师',gender:'男',email:'256656@qq.com'}
    
    
    const obj = {
        id:'1',
        name:'老师',
        age:18,
        gender:'男',
        email:'256656@qq.com'
    }
    let gender = '女';
    ({gender}  = obj);
    console.log(gender);
    //输出:男
    //如果已经声明的变量,也可以用解构赋值的方式来覆盖原来的变量值
    
    const obj = {
        id:'1',
        skills: {
            cook: {main:'炒鸡蛋'
             },
             language: {
                 frontEnd:'javascript',
                 backEnd: 'java';
            }
        } 
    }
    let {skills : {language:{fronEnd}}} = obj;
    console.log(frontEnd);
    //输出:javascript
    
    
    const arr = [
           {name:'1老师',age:18},
           {name:'2老师',age:28},
           {name:'3老师',age:38}
    ];
    arr.forEach(({name,age},inded) => {
          console.log(`姓名:${name},年龄:${age}`);
    })
    //输出: 
    //姓名:1老师,年龄:18
    //姓名:2老师,年龄:28
    //姓名:3老师,年龄:38
    
    

    函数的解构赋值

    function getAPT(data) {
          return [data.name,data.age]
    }
    const [Tname,Tage] = getAPI({name:'老师',age:18});
    console.log(Tname,Tage);
    //输出: 老师 18
    
    const str = '1老师';
    const [first,second,third] = str;
    console.log(first,second,third);
    输出: 1  老   师
    
    const arr = ['1同学','2同学','3同学','4同学','5同学','6同学','7同学'];
    //item加了中括号,获得每个元素以后再获取字符串的第一个字符
    arr.forEach(([item],index) => {
         console.log(item)
    })
    输出: 1 2 3 4 5 6 7
    
    let map = new Map();
    map.set('name1','1老师');
    map.set('name2','2老师');
    map.set('name3','3老师');
    for(let [, value] of map) {
          console.log(value);
    }
    //输出:
    // 1老师
    //2老师
    //3老师
    
    

    node里也可以用到解构赋值

    const {createServer} = require('http')
    

    正则表达式

    const str = '再见了886爱你20'
    const arrReg = /(\D+)(\d+)(\D+)(\d+).exec(str);
    const {1:bye,3:loveYou} = arrReg;
    console.log(bye,loveYou);
    //输出: 再见了  爱你
    

    相关文章

      网友评论

          本文标题:ES6 学会解构赋值

          本文链接:https://www.haomeiwen.com/subject/dowivrtx.html