ES6 03数组和对象的解构

 
 要点:1.数组对象 2.对象解构

 

 一、数组解构
1.ES6提供对数组和对象的字面量提取相关数据的方法:解构操作
2.为什么用,因为json格式的普及 ,导致大量数据提取工作
3.这个提取过程在ES6的解构语法中带来极大的便利
4.数组解构赋值,两种基本写法:1.分行解构 2.单行解构
    let info=['Mr.Lee',100 ,'男']; //数组赋值
  let [name,age,gender] = info;  //数组解构赋值
 

 let info=['Mr.Lee',100,'男'],
      [name,age,gender]  =info ;//同上
 

// 单行解构,以上均可输出name值
 let [name,age,gender]=['Mr.Lee',100,'男'];
 console.log(name);

  

5.分行或单行,都可以确定必须一一完美匹配才可以正确赋值
// 数组层次也需要匹配
let [name,[age,gender]] = ['Mr.Lee',[100,'男']];
 

// 用逗号作为占位符不赋值
  let[,,gender]=['Mr.Lee',100,'男'];

  

6.变量解构时,可在数组元素中设置一个默认值
// 当gender没有赋值时,采取默认值
 let [name,age,gender='男']=['Mr.Lee',100];

  

7.还有一种...var语法,可将没有赋值的内容都赋值给这个变量
// 不定元素,将其余都赋值给other
 let [name,...other]=['Mr.Lee',100,'男'];

  

二.对象解构
1.对象的解构方法和数组大同小异,定义一个对象字面量,解构赋值
// 定义对象字面量
     let obj={
     name:'Mr.Lee',
     age:100,
    };
    let {name,age} =obj;
   console.log(name);
   console.log(age);
 

// 解构对象至变量
 let {name,age}=obj; // 或({name,age}=obj);
 

// 直接输出变量
 console.log(name);
 console.log(age);

 

2.若解构的变量名是已经存在的变量,会导致
  
     let obj={
      name:'Mr.Lee',
      age:100,
     },name='Mr.wang';  //被替代
   
 

  ({name,age}=obj);
  console.log(name);

  

3.对象变量解构也可以设置成一个默认值,在没有赋值时输出默认值;
    let obj={
         name:'Mr.Lee',
         age:100,
        };
 let {name,age,gerder='女'}=obj;
    console.log(gerder) //如果没有默认值则unidentified

 

4.如果不想要对象属性名作为解构变量,可通过键值对的方式更改变量名
 let {name:myName,age:myage}=obj;   //name将失效

  

5.在对象字面量里,还嵌套了对象,解构时也用同样的方法是解开即可;
let obj={
    name:'Mr.Lee',
    age:100,
    info:{
        id:1,
        gender:'男'
    }
}
let {info:{id,gender}}=obj;
console.log(gender);

  

6.对象的解构也支持单行的简写模式,
let {name,age}={name:'Mr.Lee',age:100};
console.log(name);

 

posted @ 2021-11-23 19:48  翟莹萍  阅读(426)  评论(0编辑  收藏  举报